python中的列表
在Python中,列表(List)是一种有序、可变、允许重复元素的数据结构,用于存储一组有序的数据。列表是Python中最常用的数据类型之一,具有广泛的应用场景。下面是关于Python列表的一些基本知识:
-
定义列表:可以使用方括号
[]
来定义列表,并在其中包含一组元素。my_list = [1, 2, 3, 4, 5]
-
列表索引和切片:可以使用索引和切片来访问列表中的单个元素或子列表。
print(my_list[0]) # 输出第一个元素1 print(my_list[1:3]) # 输出子列表[2, 3]
-
列表长度:可以使用
len()
函数来获取列表的长度。length = len(my_list)
-
列表操作:
- 添加元素:可以使用
append()
方法向列表末尾添加新元素。my_list.append(6)
- 插入元素:可以使用
insert()
方法在指定位置插入新元素。my_list.insert(2, 10)
- 删除元素:可以使用
del
语句、remove()
方法或pop()
方法删除列表中的元素。del my_list[0] my_list.remove(3) popped_element = my_list.pop(2)
- 清空列表:可以使用
clear()
方法清空列表中的所有元素。my_list.clear()
- 添加元素:可以使用
-
列表迭代:可以使用
for
循环对列表进行迭代。for item in my_list: print(item)
-
列表方法:Python提供了丰富的内置方法来操作列表,例如
sort()
、reverse()
、count()
等。my_list.sort() # 对列表进行排序 my_list.reverse() # 将列表中的元素反转 count = my_list.count(2) # 统计列表中元素的出现次数
-
列表推导式:可以使用列表推导式快速生成列表。
squares = [x ** 2 for x in range(1, 6)] # 生成1到5的平方列表
列表是Python中非常强大和灵活的数据类型,能够存储各种类型的元素,并支持丰富的操作和方法,使得列表在实际编程中应用广泛。
学习笔记
错误示例1、列表无replace方法,故不能用这种方法完成替换
lst = ["张三丰","张无忌","张自己安","张飞"]
print(lst)
for item in lst:
if item.startswith("张"):
print(item)
item.replace("张", "王")
print(item)
print(lst)
报错情况:不能成功替换,因为每次对字符串的操作都会产生新的字符串,下面的item1才是我们想要的结果
lst = ["张三丰","张无忌","张自己安","张飞"]
print(lst)
for item in lst:
if item.startswith("张"):
print(item)
item1 = item.replace("张", "王")
print(item1)
print(lst)
错误示例2、列表无lst[item]得到索引的方法,而用下面的代码lst.index(item)即可解决:
lst = ["张三丰","张无忌","张自己安","张飞"]
print(lst)
for item in lst:
if item.startswith("张"):
print(item)
# item.replace("张", "王")
new = "wang" + item[1:]
print(new)
lst[int(lst[item]-1)] = new
print(lst)
报错内容:Traceback (most recent call last):
File "/home/visionx/project/Watermark-Robustness-Toolbox/test.py", line 12, in <module>
print(lst["张三丰"])
TypeError: list indices must be integers or slices, not str
lst = ["张三丰","张无忌","张自己安","张飞"]
print(lst)
for item in lst:
if item.startswith("张"):
print(item)
# item.replace("张", "王")
new = "wang" + item[1:]
print(new)
lst[lst.index(item) - 1] = new
print(lst)
# print(lst["张三丰"])
又或者:
lst = ["张三丰", "张无忌", "张自己安", "张飞"]
for i in range(len(lst)):
if lst[i].startswith("张"):
new_name = "王" + lst[i][1:]
lst[i] = new_name
print(lst)
错误示例3、 pop和remove删除元素的索引傻傻分不清楚
lst = ["张三丰","张无忌","张自己安","张飞","张enai"]
# # lst = [12,34,55,66,542,23,12,23]
# lst.sort()
# print(lst)
for item in lst:
if item.startswith("张"):
print(item)
print(lst)
# item1 = item.replace("张", "王")
# lst.remove(item)
print(lst.index(item))
lst.pop(lst.index(item))
# print(item1)
print(lst)
运行过程:
张三丰
['张三丰', '张无忌', '张自己安', '张飞', '张enai']
0
张自己安
['张无忌', '张自己安', '张飞', '张enai']
1
张enai
['张无忌', '张飞', '张enai']
2
['张无忌', '张飞']
由于列表长度一直在减小,而索引一直在增大,所以没有遍历到的这部分元素便不会被删除
正确做法创建一个新的列表,将不是姓张的元素添加到新列表中:
lst = ["张三丰", "张无忌", "张自己安", "张飞", "张无忌"]
new_lst = []
for item in lst:
if not item.startswith("张"):
new_lst.append(item)
lst = new_lst
print(lst)
或者是这样:
相关链接
列表元素的排序规则
在 Python 中,对列表进行排序时,默认情况下会按照列表中元素的自然顺序进行排序。对于字符串类型的元素,自然顺序是按照 Unicode 码点进行比较。
在你提供的列表lst
中,元素都是字符串类型,因此调用sort()
方法时,会按照字符串的自然顺序进行排序。对于字符串类型,自然顺序是按照字符的 Unicode 码点进行比较,即按照字典序进行排序。
所以,对于lst = ["张三丰", "张无忌", "张自己安", "张飞"]
,调用sort()
方法后,元素会按照以下顺序进行排序:
["张三丰", "张无忌", "张自己安", "张飞"]
如果你想要按照其他规则进行排序,例如按照字符串的长度、按照拼音排序等,你可以通过传递参数给sort()
方法来指定自定义的排序规则。例如,如果要按照字符串的长度进行排序,可以传递key=len
参数:
lst = ["张三丰", "张无忌", "张自己安", "张飞"]
lst.sort(key=len)
print(lst) # 输出:["张飞", "张无忌", "张三丰", "张自己安"]
这样就会按照字符串长度进行排序。
完结撒花
所以啊,人总患孤寡!