列表
列表中的值按照逗号隔开,是有序的,支持切片。
li = ['wang', 'li', 'mf', 'zx', 'qs']
1、增删改查
增:
- append追加元素到结尾
- insert插入元素到索引位置
- extend迭代添加,拆分成每个元素的最小值添加
如果插入元素不可迭代,将会报错:“TypeError: 'XXX' object is not iterable”
append和insert插入可迭代元素,不会拆分插入,extend会拆分插入
li.append([1, 2, 3]) ['wang', 'li', 'mf', 'zx', 'qs', [1, 2, 3]] li.insert(3, [1, 2, 3]) ['wang', 'li', 'mf', [1, 2, 3], 'zx', 'qs'] li.extend([1, 2, 3]) ['wang', 'li', 'mf', 'zx', 'qs', 1, 2, 3]
删:
- pop按照索引值删除,并返回值。未加索引值,默认删除最后一个。
- remove 按照元素删除
- clear清空列表
- del从内存中删除列表,也可以切片删除
print(li.pop(1)) # 删除所以未1的记录,并返回 print(li.pop()) # 删除最后1个记录,并返回 li.remove('zx') # 删除列表内容为zx的记录 li.clear() # 清空列表 del li # 从内存中删除,此时打印将会报错 del li[0:2] # 切片删除,索引0到1的记录
改:
- 按照索引修改,索引值对应部分改为所提供值
- 按照切片修改,切片部分被所提供内容迭代替换,如果提供值不能迭代,将会报错
#索引修改 li[0] = '超神' # 索引0位置的值,替换未后续值 li[1] = ['doubule kill', 'three kill'] # 直接修改值为列表 #切片替换 li[0:2] = 'ni超超超厉害' # 去除切片的部分,赋值的值用迭代处理 li[0:2] = 123 # 无法迭代,报错TypeError: can only assign an iterable li[0:2] = [1, 2, 3, '春哥', '无敌'] # 按照每个元素,迭代替换切片部分
查:
# 遍历每一个值 for i in li: print(i) # 切片访问 print(li[0:3]) # 结果为列表
其他方法:
print(li) print(len(li)) # 列表个数 print(li.count('春哥')) # 求值出现的次数 print(li.index('无敌')) # 求值出现位置的index li = [1, 4, 2, 3, 4, 5, 8, 9, 1] li.sort() # 正向排序 print(li) li.sort(reverse=True) # 反向排序 print(li) li.reverse() # 列表反转,不排序 print(li)
字符串和int同时出现在列表中,不能进行排序操作
默认情况下,使用sort排序速度是最快的
2、列表的循环
li = ['lily', '雾蒙蒙', ['zxw', 'male', 'order', 32], 34] # 按照顺序打印每个内容 for i in li: print(i)
3、列表的嵌套
li = ['lily', '雾蒙蒙', ['zxw', 'male', 'order', 32], 34] # 获取元素1的第一个字符 print(li[1][1]) # 蒙 # 元素0的字母大写 print(li[0].upper()) # LILY # 第一个元素大写,并重写入原本的列表 name = li[0].capitalize() li[0] = name print(li) # ['Lily', '雾蒙蒙', ['zxw', 'male', 'order', 32], 34] # 对元素1进行替换操作 print(li[1].replace('蒙', '淡')) # 雾淡淡 li[1] = li[1].replace('蒙', '淡') # 对子列表进行操作,字母代谢 li[2][0] = li[2][0].upper() # ['Lily', '雾淡淡', ['ZXW', 'male', 'order', 32], 34] print(li)
4、元祖
元祖为只读列表,可循环、查询、切片
儿子不能变,孙子可能可以改
t = ('2', '2', '123', ['name', 'age', 'hi'], 'adf') print(t[3]) # ['name', 'age', 'hi'] print(t[1:3]) # ('2', '123') # Reading values for tuple loops for i in t: print(i) # slice reads the value of index 3 and changes it to uppercase t[3][1] = t[3][1].upper() print(t) # ('2', '2', '123', ['name', 'AGE', 'hi'], 'adf') # List in tuple can be modified and added t[3].append('god') print(t) # ('2', '2', '123', ['name', 'AGE', 'hi', 'god'], 'adf')
元祖默认情况下不可以改,但是如果元祖的子元素为列表时,可以修改,叫做可变动元祖
5、range
print('range between 3 to 10') for i in range(3, 10): print(i) print('range between 0 to 10') for i in range(10): print(i) print('range between 0 to 10,step 3') for i in range(0, 10, 3): print(i) print('range between 10 to 0,step -2') for i in range(10, 0, -2): print(i) print("if the start value less then the end value and the step is negative ! " "No error will be reported and empty will be returned, ") for i in range(0, 10, -1): print(i)
range中,生成的列表范围为左开右闭区间,即顾头不顾尾
如果开始值小于结束值,且step为负数。将会不报错且返回结果为空
6、练习
# 5,查找列表li中的元素,移除每个元素的空格, # 并找出以’A’或者’a’开头,并以’c’结尾的所有元素, # 并添加到一个新列表中,最后循环打印这个新列表。 # Method 1 # Using startwith and endwith functions to determine string rules li = ['taibai ', 'alexC', 'AbC ', 'egon', ' Ritian', ' Wusir', ' aqc'] b = [] for i in li: s = i.strip() if (s.startswith('A') or s.startswith('a')) and s.endswith('c'): b.append(s) for i in b: print(b) # Method 2 # Using == rule and upper function to determine string rules li = ['taibai ', 'alexC', 'AbC ', 'egon', ' Ritian', ' Wusir', ' aqc'] b = [] for i in li: s = i.strip() if s[0].upper() == 'A' and s[-1] == 'c': b.append(s) print("Using == rule and upper function to determine string rules") for i in b: print(b) # 6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符: # 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”] # 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中; # 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] new_li = [] info = input("评论") for i in li: if i in info: l = len(i) info = info.replace(i, "*" * l) new_li.append(info) print(new_li)