从大厂程序员到全职宝妈,再到米核AI合伙人,其实我接触过不少编程语言。但要问我Python里最常用的数据结构是什么?今天就把我这些年总结的列表使用心得分享给大家,纯干货,建议收藏!# 购物清单
shopping = ["牛奶", "面包", "鸡蛋", "牛肉"]
# 成绩单
scores = [85, 92, 78, 90, 88]
# 混搭也没问题
mixed = ["星禾", 28, True, 3.14]
fruits = ["苹果", "香蕉"]
# 末尾加一个
fruits.append("橙子")
print(fruits) # ['苹果', '香蕉', '橙子']
# 指定位置插入
fruits.insert(1, "葡萄")
print(fruits) # ['苹果', '葡萄', '香蕉', '橙子']
# 一次加好几个
fruits.extend(["芒果", "梨"])
print(fruits) # ['苹果', '葡萄', '香蕉', '橙子', '芒果', '梨']
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
# 按位置删
del fruits[1] # 删除第2个
print(fruits) # ['苹果', '橙子', '葡萄']
# 按值删(删第一个匹配的)
fruits.remove("橙子")
print(fruits) # ['苹果', '葡萄']
# 弹出来(删掉并返回)
popped = fruits.pop()
print(popped) # 葡萄
print(fruits) # ['苹果']
fruits = ["苹果", "香蕉", "橙子"]
fruits[1] = "芒果" # 直接赋值替换
print(fruits) # ['苹果', '芒果', '橙子']
fruits = ["苹果", "香蕉", "橙子", "香蕉"]
# 索引查询
print(fruits[0]) # 苹果
print(fruits[-1]) # 橙子(倒数第一个)
# 切片查询
print(fruits[0:2]) # ['苹果', '香蕉']
# 判断存在
print("香蕉" in fruits) # True
print("西瓜" in fruits) # False
# 统计出现次数
print(fruits.count("香蕉")) # 2
nums = [0, 1, 2, 3, 4, 5, 6]
print(nums[2:5]) # [2, 3, 4] 索引2到4
print(nums[:3]) # [0, 1, 2] 从头到索引2
print(nums[3:]) # [3, 4, 5, 6] 从索引3到末尾
print(nums[::2]) # [0, 2, 4, 6] 隔一个取一个
print(nums[::-1]) # [6, 5, 4, 3, 2, 1, 0] 反转
这是Python最优雅的语法之一,用好了代码瞬间变简洁。# 传统写法
squares = []
for x in range(10):
squares.append(x ** 2)
# 列表推导式(一行搞定)
squares = [x ** 2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 筛选偶数的平方
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]
# 把名字变成大写
names = ["alice", "bob", "charlie"]
upper_names = [name.upper() for name in names]
print(upper_names) # ['ALICE', 'BOB', 'CHARLIE']
# 过滤无效数据
data = [" Alice ", "Bob\n", "", "Charlie "]
clean = [s.strip() for s in data if s.strip()]
print(clean) # ['Alice', 'Bob', 'Charlie']
fruits = ["苹果", "香蕉"]
print(fruits[5]) # IndexError!报错!
fruits = ["苹果", "香蕉"]
fruits.remove("西瓜") # ValueError!找不到!
# 危险!
nums = [1, 2, 2, 3, 2]
for n in nums:
if n == 2:
nums.remove(n) # 可能漏删!
# 安全做法
nums = [1, 2, 2, 3, 2]
nums = [n for n in nums if n != 2] # 用列表推导式过滤
a = [1, 2, 3]
b = a # b和a指向同一个列表!
b[0] = 99
print(a) # [99, 2, 3] a也被改了!
# 正确做法
a = [1, 2, 3]
b = a.copy() # 或者 b = a[:] 或者 import copy; b = copy.deepcopy(a)
scores = [85, 92, 78, 90, 88]
# 添加成绩
scores.append(95)
print(f"平均分: {sum(scores) / len(scores):.1f}") # 88.6
# 最高分和最低分
print(f"最高: {max(scores)}, 最低: {min(scores)}")
text = "苹果 香蕉 苹果 橙子 香蕉 苹果"
words = text.split()
# 统计词频
word_count = {}
for word in words:
word_count[word] = word_count.get(word, 0) + 1
# 按频率排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
print(sorted_words) # [('苹果', 3), ('香蕉', 2), ('橙子', 1)]
| | |
|---|
| append()insert()extend() | |
| delremove()pop()clear() | |
| list[i] = x | |
| list[i]incount()index() | |
今天的分享就到这里啦!Python列表真的是编程中最常用的数据结构之一,熟练掌握它能让你的代码更简洁、更高效。大家平时用Python处理什么场景比较多呢?有没有什么列表使用的心得?欢迎在评论区聊聊~如果你也在学Python或者想入局AI赛道,可以找我cuizh002,我有一些基础的学习资料可以分享给你~