补充:
#只能是至少一个空格组成的字符串(全空格) s = " " print(s.isspace()) #输出:True
tuple:
tu = (1) int 数据类型 tu1 = (1,) tuple数据类型 tu2 = ("a") str数据类型 tu3 = ("a",) tuple数据类型 #当元组只有y一个元素组成,并且没有用“,”隔开,则该元素是什么类型,则整体就是什么数据类型
list:
在循环一个列表时,如果要删除某些或某类元素,容易出错
l1 = [111,222,333,444,555] for i in range(len(l1)): del l1[i] print(l1) #报错,由于每次删除,列表都改变,越来越短,所以后面找不到
fromkeys:
dic = dict.fromkeys('abc','alex') print(dic) #输出{'a': 'alex', 'b': 'alex', 'c': 'alex'} #将前面字符串 分别作为后面字符串的key
dic1 = dict.fromkeys([1,2,3],[]) print(dic1) dic1[1].append('alex') print(dic1) #{1: [], 2: [], 3: []} #{1: ['alex'], 2: ['alex'], 3: ['alex']} #添加的“alex”是添加到没有fromkeys之前的[]
#删除 字典中带有k的键值对 dic = {'k1':'a','k2':'b','k3':'c','name':'d'} l1 = [] for i in dic: if 'k' in i: l1.append(i) for j in l1: del dic[j] print(dic) #先把带“k”的循环出来,添加到新的列表里,然后循环列表了的数据,在字典里删除
不可变数据类型:可哈希
数据类型的转换:
str--->list 用split切割
list--->str 用join
字典专属类型:与list转换
print(dic.keys()) #dict_keys(['k1', 'k2', 'k3', 'name']) 再转换成列表:list(dic.keys()) print(dic.values()) print(dic.items()) #都可转换成列表
对于赋值运算,就是共同指向一个内存地址:
l1 = [1,2,3,4] l2 = l1 l1.append(5) print(l1,l2) #输出:[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] #指向同一个内存地址 -------------------------------------------- s1 = "abcd" s2 = s1 s1 = "abcde" print(s1) print(s2) #输出:abcde abcd
#指向不同内存地址 #字符串不能改变,如果改变,形成新的字符
copy:
对于浅层copy,第一层是独立内存地址,从第二层来说,都指向同一内存地址,一变都变
l1 = [1,2,3] l2 = l1.copy() l1.append(4) print(l1,id(l1)) print(l2,id(l2)) #输出:[1, 2, 3, 4] 737988481992 #输出:[1, 2, 3] 737987305544 ———————————————————— l1 = [1,2,[4,5],3] l2 = l1.copy() l1[2].append(4) print(l1,id(l1)) print(l2,id(l2)) #输出:[1, 2, [4, 5, 4], 3] 95033008200 #输出:[1, 2, [4, 5, 4], 3] 95034162248 列表内部的列表:占的是同一个内存地址
对于深copy来说,无论多少层,在内存中都是独立的
import copy l1 = [1,[22,33,],2,3] l2 = copy.deepcopy(l1) l1.append(777) l1[1].append(666) print(l1,id(l1),id(l1[1])) print(l2,id(l2),id(l2[1])) #输出[1, [22, 33, 666], 2, 3, 777] 112902551624 112902552648 #输出[1, [22, 33], 2, 3] 112902550920 112902574728
l1 = [1,[1,2],2,3] l2 = l1[:] l1[1].append(111) print(l1) print(l2) #输出:[1, [1, 2, 111], 2, 3] [1, [1, 2, 111], 2, 3] #l2 = l1[:] 是浅copy
#切片是浅copy