目录
列表:可以一次性存储多个数据,并且元素可以是任意的类型。
列表的定义:中括号包围所有的元素,每个元素间用逗号隔开。
li = ['a', 'b', 'c', 1, 1.5, True, 'music']
访问
列表和字符串一样,也是有下标的,下标从0开始,到列表的长度-1,同样支持负数,-1表示最后一个元素,-2表示倒数第二个元素,以此类推。
我们可以通过下标直接访问到某个元素。
li = ['a', 'b', 'c', 1, 1.5, True, 'music']
print(li[0]) # a
print(li[1]) # b
print(li[-1]) # music
如果我们要获取列表的所有元素呢?我们可以通过循环来获取。
列表本身就是一个可以迭代的对象,因此我们可以直接for循环读取。
li = ['a', 'b', 'c', 1, 1.5, True, 'music']
# 循环读取
for e in li: # 列表是可迭代对象,可以通过for in 方式吧一个个元素取出来
print(e)
同样可以通过while循环加下标的方式来获取。
li = ['a', 'b', 'c', 1, 1.5, True, 'music']
i = 0
while i < len(li):
print(li[i]) # 通过下标取值
i += 1
添加
+
我们可以直接使用+拼接两个列表,会返回一个拼接后的新列表。
l = ["Python", "C++", 'Java']
b = [1991, 1998, 1995]
info = l + b
print(info) #['Python', 'C++', 'Java', 1991, 1998, 1995]
insert
语法: listname.insert(index,obj) 表示在index前插入obj这个元素。
插入元素
在下标1的位置,也就是C++前插入一个C。
l = ["Python", "C++", 'Java']
l.insert(1, 'C') #改变原列表
print(l) #['Python', 'C', 'C++', 'Java']
插入元组
insert不仅仅可以插入元素,也可以插入一个元组,元组就是使用()包含的,这里后面会介绍,此时会把元组当做一个整体插入进去,下面是在下标2之前也就是Java之前插入。
l = ["Python", "C++", 'Java']
# 插入一个元组
t = ('c#', 'go')
l.insert(2, t) ['Python', 'C++', ('c#', 'go'), 'Java']
print(l)
append
语法:listname.append() 表示尾插
尾插元素
l = ["Python", "C++", 'Java']
l.append('PHP')
print(l) # ['Python', 'C++', 'Java', 'PHP']
尾插元组
l = ["Python", "C++", 'Java']
t = ('a', 'b', 'c')
l.append(t)
print(l) # ['Python', 'C++', 'Java', ('a', 'b', 'c')]
extend
语法: listname.extend(obj) 在列表末尾添加obj,并可以把obj中的元素拆分为单个。
插入元组
我们可以看到,上面的append还是Inert插入元组都是将元组作为一个整体,也就是()的形式添加进去的,而extend是把元组里吗元素打散添加到extend中。
l = ["Python", "C++", 'Java']
t = ('a', 'b', 'c')
l.extend(t)
print(l) # ['Python', 'C++', 'Java', 'a', 'b', 'c']
插入元素
l = ["Python", "C++", 'Java']
l.extend('9')
print(l) # ['Python', 'C++', 'Java', '9']
修改
修改的本质是赋值,因此我们可以通过下标来进行修改。
通过下标修改单个元素
nums = [1, 2, 3, 4, 5]
nums[2] = 9 # 通过下标访问指定元素,然后给该元素赋新值
print(nums) # [1, 2, 9, 4, 5]
通过切片修改多个元素
nums = [1, 4, 3, 5, 9]
nums[2:5] = [10,20,30] # 左闭右开[2,5),步长默认1
print(f'切片修改元素: {nums}') #[1, 4, 10, 20, 30]
删除
del
del删除整个列表
语法:del listname (删除整个列表)
1) del listname 删除整个列表
s = list('hello') # 把字符串转换为列表
print(s) #['h', 'e', 'l', 'l', 'o']
del s # 删除整个列表
print(s) # 此时s会没有被定义,也就是说s用不了
del删除单个元素
s = [1,2,3,4,5,6,7]
del s[1]
print(s) #[1, 3, 4, 5, 6, 7]
del删除多个元素
s = [1,2,3,4,5,6,7]
# del s[1]
# print(s)
# del 删除多个值
del s[2:5] # 同样左闭右开[2,5)
print(s) # [1, 2, 6, 7]
pop
语法:pop listname.pop(index) index不写默认删除列表中最后一个元素。
删除下标为x的元素
nums = [1, 2, 3, 4, 5, 6, 7, 8]
nums.pop(3)
print(nums) #[1, 2, 3, 5, 6, 7, 8]
默认不带参数是尾删
nums = [1, 2, 3, 4, 5, 6, 7, 8]
nums.pop()
print(nums) #[1, 2, 3, 4, 5, 6, 7]
remove
语法:listname.remove(val) 进行值删除,无则报错, 如果有相同值, 删除第一个。
下面要删除2,列表中有存在两个2,但是会删除第一个。
names = ['music', 2, 3, 4,5,2]
names.remove(2)
print(names) # ['music', 3, 4, 5, 2]
clear
语法:listname.clear() 清除所有元素。
names = ['music', 2, 3, 4,5,2]
names.clear()
print(names) # 空
查找
in
in 存在,在什么里面 True 否则为 False。
list1 = ['lucy', 'tom', 'music', 'wilia']
name = input('需要查找的名字是: ')
if name in list1: # 如果name在list1里面,则执行if里面的语句
print('找到了')
else:
print('没找到')
not in
not in: 不在什么里面 True,否则为False。
list1 = ['lucy', 'tom', 'music', 'wilia']
name = input('需要查找的名字是: ')
if name not in list1: # 如果name在list1里面,则执行if里面的语句
print('没找到')
else:
print('找到了')
count
语法: listname.count(obj) 统计obj在列表中出现的次数。
如果返回0,说明不存在,否则存在。
# count如果返回0,则表示列表中不存在这个元素--可以用count判断某个元素是否存在
scores = [421,24,53,25,23,23,3,23]
print(scores.count(23)) # 3 统计2出现的次数
print(scores.count(99)) # 0 表示不在
index
语法: listname.index(obj,start,end) start,end可以不写,默认整个列表里查找,同样是左闭右开的。
查找23的下标,23出现了多出,会返回第一个23的下标。如果这个元素不存在直接报错。
scores = [421,24,53,25,23,23,3,23]
print(scores.index(23)) #4
print(scores.index(9)) # scroes中没有9,会报错
排序
reverse
语法:listname.reverse() 在原列表上进行逆置。
li1 = [1, 4, 3, 2, 5, 9, 25]
li1.reverse() # 在源列表上逆置 [25, 9, 5, 2, 3, 4, 1]
print(li1)
sort
语法: listname.sort()在原列表上进行排序。
升序
sort默认就是升序的。
li1 = [1, 4, 3, 2, 5, 9, 25]
li1.sort() # 排序 升序
print(li1) # [1, 2, 3, 4, 5, 9, 25]
降序
sort的reverse参数给True就是降序。
li1 = [1, 4, 3, 2, 5, 9, 25]
li1.sort(reverse=True) # 降序
print(li1) #[25, 9, 5, 4, 3, 2, 1]