[] 列表
{} 字典 / 集合 --->散列表
() 元组
[x for x in range(10)] 列表推导 ---->得出列表 --->迭代协议
(x for x in range(10)) 生成器表达式--->用一个生成一个 (yield next() )
#集合
In [7]: a={'a','b','c','d'}
In [9]: type(a)
Out[9]: set
#字典
In [11]: ad ={'a':'d','b':'c'}
In [12]: type(ad)
Out[12]: dict
#元组
In [13]: a =(1,2,3,4)
In [14]: type(a)
Out[14]: tuple
#生成器
In [15]: a =(x for x in range(2))
In [16]: type(a)
Out[16]: generator
set函数使用
- 去重
- xxx 在xxx 中出现的次数
In [51]: a={'a','b','c','d'} In [52]: b={'a','b','e'} In [55]: len(a&b) Out[55]: 2
用* 处理多余的元素
a,*b,c=range(10)
In [40]: a
Out[40]: 0
In [42]: c
Out[42]: 9
In [43]: b
Out[43]: [1, 2, 3, 4, 5, 6, 7, 8]
用 _ 占位符处理不需要的东西
In [45]: _,filename = os.path.split('/home/zey/test.sh')
In [46]: filename
Out[46]: 'test.sh'
字符串整数元组列表对象创建 问题
- 对于元组 t[:] tuple(t) 都不会创建新的副本,而是返回一个对象的引用
- 对于列表 a[:] list(a) ,会创建新的副本
- 对于字符串,和一些小的整数,使用了一种叫驻留的优化措施,防止重复'创建'热门数字,
- 因此 字符串和整数比较使用 " == " 而不是 "is"
列表
In [13]: t1 =[1,2,3,4]
In [14]: t2 = t1[:]
In [15]: t3 = list(t1)
In [16]: t1 is t2 #看这里
Out[16]: False
In [17]: t1 is t3 #看这里
Out[17]: False
In [18]: id(t1)
Out[18]: 77672616
In [19]: id(t2)
Out[19]: 76649816
In [20]: id(t3)
Out[20]: 77710720
元组
In [22]: t1=(1,2,3)
In [23]: t2 =t1[:]
In [24]: t3 =tuple(t1)
In [25]: t1 is t2 #看这里
Out[25]: True
In [26]: t1 is t3 #看这里
Out[26]: True
In [27]: id(t1)
Out[27]: 77693736
In [28]: id(t2)
Out[28]: 77693736
In [29]: id(t3)
Out[29]: 77693736
In [30]: t4=(1,2,3)
In [31]: t1 is t4 #看这里
Out[31]: False
In [32]: id(t4)
Out[32]: 77722928
字符串
In [33]: s1='abc'
In [34]: s2='abc'
In [35]: s1 is s2 #看这里
Out[35]: True