华子目录
列表概念
有序且可变的容器,列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表
列表的表示方法
列表中的数据可以是int,str,list,tuple,dict,set
li = [数据1,数据2,......]
访问列表中的值
和python字符串一样,列表可以通过下标索引进行访问
也可以通过索引列表可以进行截取、组合等操作。
li = ['小张','小川','小王',98,12]
print(li[0]) #小张
print(li[:2]) #['小张', '小川']
列表嵌套
列表与列表,列表与元组之间都是可以相互嵌套的,也可以是int,str,dict,set
li = ['小张','小川',[1,2,3,'小花'],'小王',98,12]
print(li[2][3]) #小花
print(li[2][1:4]) #[2, 3, '小花']
将元组转列表
list(变量名)
tup = ('小明','小强',('xiao','xiaoming'))
print(list(tup)) #['小明', '小强', ('xiao', 'xiaoming')]
Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
python表达式 | 描述 |
---|---|
len([1, 2, 3]) | 求长度 |
li1+li2 | 列表的组合 |
li1*3 | 列表li1的重复 |
for i in li1: | 列表li1的迭代 |
3 in li1 | 判断元素是否在li1中 |
列表的内置函数
增
1.append:添加数据到列表的最后一位
用法:变量名.append(数据)
li = ['小青','小张','小王']
li.append('小川')
print(li) #['小青', '小张', '小王', '小川']
2.insert:添加数据到指定位置
用法:变量名.insert(下标,数据)
li = ['小青','小张','小王']
li.insert(0,'hh')
print(li) #['hh', '小青', '小张', '小王']
3.extend:添加序列类型到列表的最后一位并单个拆分;也可以拼接列表
用法:变量名.extend(可迭代对象)
li = ['小青','小张','小王']
li.extend('小明')
print(li) #['小青', '小张', '小王', '小', '明']
li = ['小青','小张','小王']
li1 = [1,2,3]
li.extend(li1)
print(li) #['小青', '小张', '小王', 1, 2, 3]
删
1.remove:删除指定的数据
用法:变量名.remove(数据)
li = ['小青','小张','小王']
li.remove('小青')
print(li) #['小张', '小王']
2.pop:默认删除列表的最后一位,也可以删除指定位置
用法:变量名.pop()
变量名.pop(下标)
li = ['小青','小张','小王']
li.pop()
print(li) #['小青', '小张']
li = ['小青','小张','小王']
li.pop(1)
print(li) #['小青', '小王']
3.del:全局删除,也可以删除指定的值
用法:
del 变量名
del 变量名[下标]
li = ['小青','小张','小王']
del li
li = ['小青','小张','小王']
del li[0]
print(li) #['小张', '小王']
4.clear:清空列表
用法:变量名.clear()
li = ['小青','小张','小王']
li.clear()
print(li) #[]
改
用法:变量名[下标] = 值
1.单个修改
li = ['小青', '小张', '小王']
li[1] = 99
print(li) #['小青', 99, '小王']
2.多个修改
通过切片的方式(包头不包尾)
语法:列表名[起点:终点] = 数据1,数据2.......
查
1.index:查找子元素,存在则返回对应下标,不存在则会报错
用法:变量名.index(子元素)
li = ['小青', '小张', '小王']
print(li.index('小王')) # 2
2.count:求某一元素出现的个数
用法:变量名.count()
li = ['小青', '小王', '小王']
print(li.count('小王')) #2
求长度
len:返回int类型
用法:len(列表名)
li = ['小青', '小张', '小王']
print(len(li)) # 3
列表生成式
1.生成[1,2,3,4,5,6,7,8,9]的方法
普通方法
li = []
for i in range(1,10):
li.append(i)
print(li)
列表生成式
a =[b for b in range(1,10)]
print(a)
普通方法
a1 = list(range(1,10))
print(a1)
2.生成[1*1,2*2...9*9]
普通写法
li = []
for i in range(1,10):
li.append(i*i)
print(li) #[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表生成式
print([i*i for i in range(1,10)])#[1, 4, 9, 16, 25, 36, 49, 64, 81]
sort()
与sorted()
在Python中,sort()
和 sorted()
都是用于排序的函数,但它们之间有一些重要的区别。
- sort()
sort()
是列表(list)的一个方法,它用于对列表中的元素进行原地(in-place)排序。也就是说,它会直接修改原始列表,而不是返回一个新的已排序列表。
示例:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst) # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
sort()方法可以接受一个可选的
key` 参数,用于指定一个函数来从每个列表元素中提取一个比较键(comparison key)。例如,如果你想根据字符串的长度对字符串列表进行排序,你可以这样做:
lst = ['banana', 'apple', 'cherry', 'date']
lst.sort(key=len)
print(lst) # 输出: ['date', 'apple', 'banana', 'cherry']
此外,sort()
方法还有一个可选的 reverse
参数,用于指定排序是否应为降序(默认为升序)。
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort(reverse=True)
print(lst) # 输出: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
- sorted()
sorted()
是一个内置函数,它接受任何可迭代对象(如列表、元组、字典、字符串等),并返回一个新的已排序列表,而不修改原始可迭代对象。
示例:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_lst = sorted(lst)
print(new_lst) # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(lst) # 输出: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] 注意原始列表未被修改
sorted()
函数也接受 key
和 reverse
参数,用法与 sort()
方法相同。
总结:
sort()
是列表的一个方法,它直接修改原始列表。sorted()
是一个内置函数,它接受任何可迭代对象,并返回一个新的已排序列表,而不修改原始可迭代对象。
两者都接受 key
和 reverse
参数来定制排序行为。
reverse()
与[::-1]
在Python中,reverse()
是一个内置方法,主要用于列表(list
)对象。这个方法会反转列表中的元素顺序,即第一个元素会变成最后一个,第二个元素会变成倒数第二个,以此类推。
reverse()
是一个原地操作(in-place operation),意味着它会直接修改原列表,而不是返回一个新的列表
。它没有返回值(或者更准确地说,它的返回值
是 None
)。
下面是一个简单的例子:
# 创建一个列表
lst = [1, 2, 3, 4, 5]
# 使用 reverse() 方法反转列表
lst.reverse()
# 打印反转后的列表
print(lst) # 输出: [5, 4, 3, 2, 1]
# 注意:reverse() 没有返回值(返回 None)
print(lst.reverse()) # 输出: None
由于 reverse()
没有返回值,所以你不能在赋值语句中使用它来创建一个新的反转列表。如果你想要一个新的反转列表而不是修改原列表,你可以使用切片操作(slicing)或者列表推导式(list comprehension),但这两种方法都会创建一个新的列表。
使用切片操作创建反转列表的示例:
# 创建一个列表
lst = [1, 2, 3, 4, 5]
# 使用切片操作创建一个新的反转列表
reversed_lst = lst[::-1]
# 打印新的反转列表
print(reversed_lst) # 输出: [5, 4, 3, 2, 1]
# 打印原列表,它没有被修改
print(lst) # 输出: [1, 2, 3, 4, 5]
注意,虽然 reversed()
也是一个内置函数,但它与 reverse()
是不同的。reversed()
返回一个迭代器,该迭代器会按照反向顺序生成列表中的元素,但它不会修改原列表。通常,你会在循环中使用 reversed()
,比如:
lst = [1, 2, 3, 4, 5]
for item in reversed(lst):
print(item) # 输出: 5, 4, 3, 2, 1
判断list
为空
my_list = []
if not my_list:
print("my_list is empty!")
else:
print("my_list is not empty!")
my_list = []
if my_list:
print("my_list is not empty!")
else:
print("my_list is empty!")
my_list = []
if len(my_list) == 0:
print("my_list is empty!")
else:
print("my_list is not empty!")