赋值操作
赋值操作是传址,copy是传值
可以将列表乘一个整数,表示多个列表链接在一起
a = [‘a‘,2,3,4,5]
b= 2
c = a *b
print(c)
#输入结果如下
[‘a‘, 2, 3, 4, 5, ‘a‘, 2, 3, 4, 5]
a = [x for x in range(1,35)] #生成从1到34的一个列表
# 把a中所有偶数生成一个新的列表 b
b = [m for m in a if m % 2 == 0]
print(b)
#..
c = [ m+n for m in a for n in b if m+n < 250]
print(c)
# 深拷贝跟浅拷贝的区别
# 出现下列问题的原因是,copy函数是个浅拷贝函数,即只拷贝一层内容
# 深拷贝需要使用特定工具
a = [1,2,3, [10, 20, 30]]
b = a.copy()
print(id(a))
print(id(b))
print(id(a[3]))
print(id(b[3]))
a[3][2] = 666
print(a)
print(b)
#输出结果如下:
140249408365768
140249409236040
#a[3] 和b[3] id一致,说明还是指向同一地址
140249409236232
140249409236232
[1, 2, 3, [10, 20, 666]]
[1, 2, 3, [10, 20, 666]]
# 元组相加
t1 = (1,2,3)
t2 = (5,6,7)
# 传址操作
print(t1)
print(id(t1))
t1 = t1 + t2
print(t1)
print(id(t1))
# tuple 的不可修改,指的是内容的不可修改
# 修改tuple内容会导致报错
t1[1] = 100
#元组相乘
t2 =t2 *2
# 多循环的集合内涵
s1 = {1,2,3,4}
s2 = {"i", "am", "stu"}
s = {m*n for m in s2 for n in s1}
print(s)
s = {m*n for m in s2 for n in s1 if n ==2}
print(s)
# intersection: 交集
# difference:差集 等于s1 -s2
# union: 并集
# issubset: 检查一个集合是否为另一个子集
# issuperset: 检查一个集合是否为另一个超集
s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9}
s_1 = s1.intersection(s2)
print(s_1)
s_2 = s1.difference(s2)
print(s_2)
s_3 = s1.issubset(s2)
print(s_3)
# 创建有值的字典, 每一组数据用冒号隔开, 每一对键值对用逗号隔开
d = {"one":1, "two":2, "three":3}
print(d)
d = dict({"one":1, "two":2, "three":3})
print(d)
# 利用关键字参数
d = dict(one=1, two=2, three=3)
print(d)
#
d = dict( [("one",1), ("two",2), ("three",3)])
print(d[‘one‘])
d = {"one":1, "two":2, "three":3}
# 使用for循环,直接按key值访问
for k in d:
print(k, d[k])
# 上述代码可以改写成如下
for k in d.keys():
print(k, d[k])
# 只访问字典的值
for v in d.values():
print(v)
# 注意以下特殊用法
for k,v in d.items():
print(k,‘--‘,v)
l = ["eins", "zwei", "drei"]
# 注意fromkeys两个参数的类型
# 注意fromkeys的调用主体
d = dict.fromkeys(l, "hahahahahah")
print(d)
原文:http://blog.51cto.com/14083201/2336188