copy;交集、並集、差集

變量:
 
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):
    if  i<8:
        x = input('請輸入你猜的數字,在0~9之間:')
        t.add(x)    #if x.isdecimal()
print(t)
r=random.choice(tuple(set(map(str,range(9))).difference(t)))
print('真實的數字其實是:%s' %r)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章