变量:
a=1;b=2;c=1——发现变量a和c的内存地址竟然相同,这就是Python不需要定义变量的秘密:内存中根本就没有a、b、c,自然就不必定义啦。
例如,a,b=b,a的真相是a,b=(2,1),等号后的都是存在内存里的,但是b和a并没在内存(=后若是str、int等Python类型比如'a'和'b',那才是真的放在内存里了),它俩相当于此刻的内存中的数值2和1的行参。
****************************************分割线****************************************
对于可变类型list和range等,切片copy=deepcopy>copy>等号赋值:
import
copy
a=range(0,100)
b=a[:]
c=copy.copy(a)
d=copy.deepcopy(a)
print(type(a))
print(id(a),id(b),id(c),id(d))
****************************************分割线****************************************
str对象在元组、列表、集合中的变身:
s='qwert'
jh=set();jh.update(s)
print(tuple(s),list(s),set(s),jh,sep='\n')
jh.add(s)
print((s,),[s,],jh,sep='\n')
****************************************分割线****************************************
两个list的交集、并集、差集:
a = [0,1,2,3]
b = [2,3,4,5]
intersection=list(set(a).intersection(set(b)))
#交集
union=list(set(a).union(set(b)))
#并集
dif=list(set(a) ^ set(b))
#差集
only =
list(set(a).difference(set(b)))
#a有b无
only1=[x for x in a
if x not
in b];only2=[x for x in a
if not x
in b]
print(intersection,union,dif,only,only1,only2)
**********************分割线**********************
应用:猜数字游戏の永远猜不对:
import random
t=set()
for i in range(9):
print(t)
r=random.choice(tuple(set(map(str,range(9))).difference(t)))
print('真实的数字其实是:%s'
%r)

被折叠的 条评论
为什么被折叠?



