古人:紫电青霜,王将军之武库;俗语:磨刀不误砍柴工;鸡汤:工欲善其事,必先利其器; 都有点道理 ^^
Python 中有一些常用的数据类型,列表(list
)是其中最常用的,绝大多数的操作都可能会用到,值得多花点时间来掌握
- 列表基本操作
# 1. 创建列表
my_list = [] # 创建一个空列表
my_list = list() # 创建一个空列表
my_list = [1, 2, 3, "a", "b"] # 创建时直接设置元素
# 2. 访问元素
print(my_list[0]) # 输出 1
print(my_list[1]) # 输出 2
# 3. 修改元素
my_list[0] = "a" # 将第一个元素从1改为"a"
# 4. 追加元素
my_list.append("c") # 在列表末尾添加字符串"c"
# 5. 插入元素
my_list.insert(1, "b") # 在索引1插入字符串"b"
# 6. 删除元素
my_list.remove("b") # 删除值为"b"的第一个元素
popped = my_list.pop(2) # 删除并返回索引为2的元素
# 7. 清空列表
my_list.clear() # 清空列表
# 7. 列表排序
my_list.clear() # 清空列表
my_list.append(3)
my_list.append(2)
my_list.append(1)
my_list.append(0)
my_list.sort(reverse=True) # (降序)排序列表
sorted_list = sorted(my_list) # 返回一个新的已(升序)排序列表
# 7. 查询元素
my_list = [1, 2, 3]
ix = my_list.index(1) # 值为1的第一个元素索引,ix = 0
- 列表切片
列表切片是Python中非常实用的一个功能,用来提取列表中的一部分元素
切片的写法是 [start:stop:step]
,其中 start
是起始索引(包含),stop
是结束索引(不包含),step
是步长。如果省略步长,则默认为1
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 切片示例
print(my_list[2:6]) # [2, 3, 4, 5]
print(my_list[::2]) # [0, 2, 4, 6, 8]
- 列表合并
使用 +
运算符或 extend()
方法来合并两个列表。
my_list1 = [1, 2, 3]
my_list2 = [4, 5, 6]
# 使用 + 运算符合并
print(my_list1 + my_list2) # [1, 2, 3, 4, 5, 6]
# 使用 extend() 方法合并
my_list1.extend(my_list2)
print(my_list1) # [1, 2, 3, 4, 5, 6]
- 列表转成set
使用 set()
函数将列表转换成集合(set);集合是一个无序的不重复元素集。需要注意的是,列表本身也是可变的,转换为集合并不会改变原来的列表。
list1 = [1, 2, 2, 3, 3, 3]
set1 = set(list1)
print(set1) # {1, 2, 3}
- 列表去重
有多种方法可以实现列表去重;一种是使用集合(set)来去重,然后再转换回列表;另一种是使用 list()
和 dict.fromkeys()
方法;还有一种是使用列表推导式
my_list = [1, 2, 2, 3, 3, 3]
# 使用集合去重
print(list(set(my_list))) # [1, 2, 3]
# 使用字典去重
print(list(dict.fromkeys(my_list))) # [1, 2, 3]
print(list({x: None for x in my_list})) # [1, 2, 3]
# 使用列表推导式去重
print([x for i, x in enumerate(my_list) if x not in my_list[:i]]) # [1, 2, 3]
- 列表转成字典
列表转换成字典,需要两个列表
一个列表作为键、一个列表作为值;使用 zip()
函数和 dict()
函数来实现。
keys = ['a', 'b', 'c']
values = [1, 2, 3]
print(dict(zip(keys, values))) # {'a': 1, 'b': 2, 'c': 3}
注意:Python中的列表可以放不同类型的元素,列表索引下标从0开始
may the odds be ever in your favor ~