ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小数据池,基础类型的补充

2019-03-15 18:50:32  阅读:233  来源: 互联网

标签:index 补充 tu1 dic print str l1 类型 数据


s = 'alex'
print(id(s)) # 获取内存地址

== 判断两个对象的值相同.
i = 100
i1 = 100
print(i == i1)

is 身份运算:判断的是两个对象的内存地址是否相同.

i1 = 10
i2 = 10
print(i1 is i2)


代码块
i = 1
i2 = 3
i3 = 4

一个文件是一个代码块.(函数,类都是一个代码块.)
交互命令中一行就是一个代码块.


同一个代码块:同一代码块的缓存机制,驻留机制.

i1 = 100
i2 = 300
i3 = 100
l1 = [1,2,3]
l2 = [1,2,3]
print(l1 is l2)
tu1 = (1,2,)
tu2 = (1,2,)

print(tu1 is tu2)

同一个代码块驻留机制的目的:
'''
1,节省内存空间.
2,提升性能.
'''
驻留机制针对的对象: int bool str ()空元组.

int: 范围 任意数字
i1 = 1212312312312312312312312
i2 = 1212312312312312312312312
print(i1 is i2)
bool True Fasle
str:几乎所有的字符串都会符合缓存机制,
s1 = 'fdsfdsjklffdsafdsadsjfkldsfldsfdsjlkfdsl@#$'
s2 = 'fdsfdsjklffdsafdsadsjfkldsfldsfdsjlkfdsl@#$'
print(s1 is s2)
通过相乘的形式构建的字符串长度不能超过20满足同一代码块的驻留机制.
s1 = 'old_' * 5
s2 = 'old_' * 5
print(s1 is s2) # True


不同的代码块之间: 小数据池.
小数据池是针对 不同代码块 之间的缓存机制!!!

小数据池的目的:
'''
1,节省内存空间.
2,提升性能.
'''
小数据池针对的对象: int bool str ()空元组.

int: -5 ~256
str: 一定规则的字符串

总结
'''
 如果在同一代码块下,则采用同一代码块下的换缓存机制。

  如果是不同代码块,则采用小数据池的驻留机制。
'''
i1 = 1000
i2 = 1000
print(i1 is i2)

 

 

数据类型之间的转换
int bool str list tuple dict set
'''int bool str 三者转化是可以的.'''

bool 可以与所有的数据类型进行转换.
所有为空的数据类型转化成bool都为Fasle.
0 '' [] () {} None ----> Fasle
print(bool([])) # False

str ---> list split 分割
list ---> str join # list里面的元素全部都是str类型
l1 = ['武sir', 'alex', '太白']# print(' '.join(l1))

str ----> tuple # partition
tuple ---> str join
tu1 = ('武sir', 'alex', '太白')
ret = ' '.join(tu1)
print(ret,type(ret))

list<----->tuple
l1 = ['武sir', 'alex', '太白']
print(tuple(l1))
tu1 = ('武sir', 'alex', '太白')
print(list(tu1))

dict ----> list
dic = {'name':'alex','age': 73}
print(list(dic))

set list 转化 下午讲.


tuple: 如果元组中只有单个元素并且没有 , 则类型是元素本身的类型.
tu1 = (1)
tu1 = ('alex',)
print(tu1,type(tu1))

 

dict

dic = {'name':'alex','age': 73}
dic['money'] = '10万'
print(dic)

dic = dict.fromkeys([1,2,3],'太白')
dic = dict.fromkeys('abcd','太白')
dic = dict.fromkeys('abcd',[1,])
坑: 如果你的值是一个可变的数据类型, 他在内存中是一个.id相同.
dic = dict.fromkeys('abcd',[])
dic['a'].append(666)
dic['b'].append(111)
dic['c'].append(222)
print(dic)


l1 = [1,2,3]
l2 = l1
l3 = l2
l1.append(666)
l2.append(111)
print(l1)


l1 = [11, 22, 33, 44, 55]
将此列表索引为奇数位对应的元素全部删除.

方法一:
del l1[1::2]
print(l1)

方法二:错误示例:

循环一个列表时,不要改变列表的大小.这样会影响你最后的结果.
for index in range(len(l1)):
if index % 2 == 1:
# index 奇数
l1.pop(index)
print(l1)

方法三
new_l = []
for index in range(len(l1)):
if index % 2 == 0:
new_l.append(l1[index])
print(new_l)
l1 = new_l
print(l1)

方法三:
for index in range(len(l1)-1,-1,-1):
if index % 2 == 1:
l1.pop(index)
print(l1)

循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果.


dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'}
将字典中的key中含有k元素的所有键值对删除.
dictionary changed size during iteration
for key in dic:
if 'k' in key:
dic.pop(key)
print(dic)

l1 = []
for key in dic:
if 'k' in key:
l1.append(key)
print(l1)
for key in l1:
dic.pop(key)
print(dic)

循环一个字典时,不能改变字典的大小,这样会报错.

 

标签:index,补充,tu1,dic,print,str,l1,类型,数据
来源: https://www.cnblogs.com/guoqiming/p/10538860.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有