一、列表的一些操作
'''列表的操作''' a = ['cat','dog','fish'] b = [1,4,9] c = a[0] #cat c = a[:] #['cat','dog','fish'] c = a * 2 #['cat','dog','fish','cat','dog','fish'] c = a + b #['cat','dog','fish',1,4,9] del a[0] #注意语法 print(a) #['dog', 'fish'] a.insert(0,'cat') #返回值是None print(a) #['cat', 'dog', 'fish'] a.pop(1) #不带索引默认删最后一个 print(a) #['cat', 'fish'] a.append('snake') #不能带索引,返回值是None print(a) #['cat', 'fish', 'snake']
b = a.index('cat') #返回匹配到的第一个值的索引
'''列表去重'''
a = ['cat','cat','fish']
b = set(a) #转成集合去重
c = [i for i in b] #去重后生成新列表
c = []
for i in b:
c.append(i) #等同于第一个c的语句
print(c)
二、列表循环
'''遍历列表''' a = ['cat','dog','fish'] b = [i.title() for i in a] #列表解析 print(b) for i in a: #遍历列表元素 print(i) for i in range(len(a)): #遍历列表索引 print(a[i]) for index,value in enumerate(a): #enumerate返回索引及索引对应列表元素 print(a[index],value) for i in range(4): #rang(4)等同于[0,1,2,3] print(i)
三、多重赋值
a = ['cat','dog','fish'] b,c,d = a #多重赋值语句,变量数与列表元素数量相等 print(b,c,d)
四、random模块
'''random相关应用''' import random a = ['dog','cat','fish'] b = a[random.randint(0,len(a)-1)] #randint必须传两个参数 print(b) c = random.choice(a) #等同于b的语句,更简便 print(c) d = random.shuffle(a) #随机调整列表顺序,直接作用于原列表,无返回,此处d = None print(a)
五、增强赋值
'''增强的赋值操作''' a = 'one string' b = 5 b += 1 #b = b + 1(适用于字符串拼接) b -= 1 #b = b - 1 b *= 1 #b = b * 1(适用于字符串) b /= 1 #b = b / 1 b %= 1 #b = b % 1 b //= 2 #b = b // 1
六、排序
1.sort()对原列表排序,无返回值
2.不能对既有数值又有字符串的列表排序
3.sort()方法对字符串排序时,使用“ASCII 字符顺序”,而不是实际的字典顺序。这意味着大写字母排在小写字母前面
.sort(key=str.lower)
排序时使所有字母小写进行排序,不改变列表实际元素大小写
'''排序''' a = ['cat','dog','fish'] a.sort() #正向排序 a.sort(reverse=True) #反向排序 a.sort(key=str.lower) #忽略大小写排序 b = sorted(a) #排序后返回新的列表 a.reverse() #反向排序 b = reversed(a) #反向排序后返回新的列表
七、序列数据类型
序列数据类型:列表,字符串,range()返回值,元组
共同适用于:按索引取值,切片,遍历,len(),in,not in
八、元组
1.当元组只有一个值,需要在值后面加一个逗号,以表明是一个元组
九、类型转换
'''类型转换''' a = ['cat','dog','fish'] #列表 b = ('cat','dog','fish') #元组 c = 'dacacacdcd' #字符串 d = 'ddadacacadc' #字符串 a = list(b) #元组转列表['cat', 'dog', 'fish'] b = tuple(a) #列表转元组('cat', 'dog', 'fish') c = list(c) #字符串转列表['d', 'a', 'c', 'a', 'c', 'a', 'c', 'd', 'c', 'd'] d = tuple(d) #字符串转元组('d', 'd', 'a', 'd', 'a', 'c', 'a', 'c', 'a', 'd', 'c') print(a,b,c,d,sep='\n') #打印多个变量换行
十、引用
id():显示值的内存地址
copy.copy(list or dict):复制列表或字典,实际是创建了新的值,区别于之前的原列表(字典),有独立的内存地址
copy.deepcopy(list or dict):当列表中包含列表,字典中包含字典,用这个
十一、习题
spam = ['apples', 'bananas', 'tofu', 'cats'] msg = '' for index,value in enumerate(spam): if index != 3: msg = msg+ value+',' else: msg = msg+'and '+value print(msg)
import random numberOfStreaks = 0 total = [] b = '' for experimentNumber in range(100): # Code that creates a list of 100 'heads' or 'tails' values. for i in range(100): t = random.randint(0,1) if t == 0: total.append('T') else: total.append('F') # Code that checks if there is a streak of 6 heads or tails in a row. for i in total: b += i c = b.count("TTTTTT") + b.count("FFFFFF") numberOfStreaks = numberOfStreaks + c numberOfStreaks = numberOfStreaks / 10000 print(total) print('Chance of streak: %s%%' % (numberOfStreaks / 100)) #%s字符串占位,%%转义百分号