列表篇:
一:列表的定义
列表就相当于一个容器(列表,元组,字典,字符串这些都是),可以存储任意不同类型的数据,列表还是可变的,有序的(说明有索引)
1.首先列表定义
变量名 = [元素1,元素2.......](不要用list)
list1=[]
这就是一个最简单的空列表
2.列表里面存储的元素是任意的,可以是int,可以是str,也可以是元组和集合等等,甚至还可以里面套元组,套列表套字典啥的,啥都可以套。
list1=[1,'11',[1,,2]]
list2 = [(1,2,3,4,5)]
list3 = [{'k1':1,'k2':2}]
3.列表里面存储的元素是可以重复的
list1=[1,2,3,4,5]
二:遍历列表
lst = [1,12,3,4,5,6,7]
print(len(lst))
#方法一
for num in lst:
print(num)
#方法2 遍历索引
for i in range(len(lst)):
print(i,lst[i])
#方法三
#enumerate 枚举 元组的形式
for i,num inenumerate(lst):
print(i,num)
# i 代表的是索引,num是列表里的数据,这俩是一一对应的
三:列表的增删改查
1.增
首先我们要明确,列表是可变的,对列表进行增删查改后,都是对原列表进行改变
在列表的增删改查里我们会用到pycharm里的系统函数
# list.append(obj):在列表追加元素obj,任意元素。
list1 = [1,2,3,4,5,6]
list1.append(99)
list1.append("123")
print(list1)#[1, 2, 3, 4, 5, 6, 99, '123']
#list.extend(seq):seq有序序列(容器),将seq中的指定元素拓展到list中
list2 = [12,3,4]
list2.extend([1,2,3])
list2.extend("123")
print(list2)#[12, 3, 4, 1, 2, 3, '1', '2', '3']
#list.inset(index,obj):插入,在指定索引处插入obj
list3 = [1,2,3,4,5]
list3.insert(5,6)
list3.insert(6,'77')
print(list3)#[1,2,3,4,5,6,'77']
2.删
#list.remove(obj):将列表中的指定元素obj移除掉,从左往右依此删掉第一个匹配项
lit = [1,2,3,4,5,6,7,7,7,7,7,7]
for _ in range(6):
lit.remove(7)
print(lit)#[1,2,3,4,5,6]
#list.pop(index):弹出,表示将指定索引index的元素弹出
#index可以省略,默认弹出最后一个,被弹出的元素还想继续使用,而用变量保存起来
lit1 = [1,2,3,4,5,6]
lit1.pop()
r = lit1.pop(3)
print(lit1,r)
#list.clear()清空
#清空例表所有的数据,成为一个空列表
# del XXX
#在del后面加上索引删除指定元素
3.改
# 三、改
# 1.list.reverse():反转列表中的元素/逆序列表中的元素
list1 = [34,22,33,66]
# 方式一
# new_list1 = []
# for i in range(-1,-(len(list1) + 1),-1):
# # 生成新的列表
# new_list1.append(list1[i])
# print(new_list1) # [66,33,22,34]
# 方式二
list1.reverse()
print(list1)
# 2.list.sort(key=None,reverse=False):排序
# a
# 注意1:默认为升序
# 注意2:如果要进行排序,则列表中的元素必须支持大小比较
list21 = [34,5,7,8,9]
list21.sort()
print(list21)
# 错误写法
# list21 = ['ga',5,7,8,9]
# list21.sort() # TypeError: '<' not supported between instances of 'int' and 'str'
# print(list21)
# 注意3:元素是字符串,可以排序,因为字符串可以比较大小,依据ASCII码表
'''
常见ASCII码的大小规则:数字< 大写字母 < 小写字母。
1.数字比字母要小。如 “7”<“F”;
2.数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3.字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4.同个字母的大写字母比小写字母要小32。如“A”<“a” 。
5.几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48
'''
list21 = ['fe','sb','adfd','xyz','uif']
list21.sort() # ['adfd', 'ae', 'sb', 'uif', 'xyz']
print(list21)
# 注意4;元素是列表或元组,依次根据子列表或子元组中的元素进行比较,比如:如果0索引处的元素相同,则比较1索引...
list1 = [[34,6],[6,8]]
list1.sort() # [[6, 8], [34, 6]]
print(list1)
list1 = [(34,6),(6,8)]
list1.sort() # [(6, 8), (34, 6)]
print(list1)
# list1 = [{34:6},{6:8}]
# list1.sort() # TypeError: '<' not supported between instances of 'dict' and 'dict'
# print(list1)
# b.降序,reverse默认为False,表示升序,如果将reverse赋值为True
list21 = [34,5,7,8,9]
list21.sort(reverse=True)
print(list21)
# c.key=func:此时的func表示自定义排序规则
list21 = ['fe','456f','adfd','xyz34454','uif51']
# 需求:根据字符串的长度进行升序排序
list21.sort(key=len)
print(list21) # ['fe', '456f', 'adfd', 'uif51', 'xyz34454']
4.查
# 四、查
# 1.len() *******
print(len(list21))
# 2.max()
print(max(5,67,8,9,0))
print(max([5,67,8,9,0]))
# 3.min()
print(min(5,67,8,9,0))
print(min([5,67,8,9,0]))
# 4.lst.index(ele):查找元素ele在列表中第一次出现的索引
list4 = [5,7,67,3,3,1,3,3,5,7,89]
r = list4.index(3)
print(r)
# 底层原理
ele = 3
for i,num in enumerate(list4):
if num == ele:
print(i)
break
# 5.lst.count(ele):统计元素ele在列表中出现的次数 **********
list4 = [5,7,67,3,3,1,3,3,5,7,89]
c = list4.count(3)
print(c)
print(list4.count(100)) # 0
# 需求:将列表中的元素8全部删除
list1 = [54,6,8,9,23,8,8,8,5,67,8]
ele = 8
c = list1.count(ele)
for _ in range(c):
list1.remove(ele)
print(list1)