Python进阶基础:那些让你少写10行代码的小技巧

28 阅读1分钟

一、列表推导式:一行搞定循环+判断

概念:

用简洁语法快速生成/筛选列表,替代繁琐for循环+if判断。

语法:

 [表达式 for 变量 in 可迭代对象 if 条件] 

代码示例:

# 常规写法
old_list = [1,2,3,4,5,6]
new_list = []
for num in old_list:
    if num % 2 == 0:
        new_list.append(num*2)

# 列表推导式写法
new_list = [num*2 for num in [1,2,3,4,5,6] if num % 2 == 0]
print(new_list)  # 输出:[4, 8, 12]

 

二、字典.get():避免KeyError的神器

概念:

安全获取字典值,键不存在时返回默认值,无需额外判断。

语法:

 字典.get(键, 默认值) 

代码示例:

user = {"name": "张三", "age": 20}
# 常规写法(易报错)
# print(user["gender"])  # KeyError: 'gender'

# get()写法
print(user.get("gender", "未知"))  # 输出:未知
print(user.get("name", "匿名用户"))  # 输出:张三

 

三、enumerate():循环自带索引

概念:

遍历可迭代对象时,同时获取元素索引和值,无需手动维护计数。

语法:

 enumerate(可迭代对象, 起始索引=0) 

代码示例:

fruits = ["苹果", "香蕉", "橙子"]
# 常规写法
index = 0
for fruit in fruits:
    print(index, fruit)
    index += 1

# enumerate()写法
for idx, fruit in enumerate(fruits, 1):
    print(idx, fruit)  # 输出:1 苹果  2 香蕉  3 橙子

 

四、zip():多序列同步遍历

概念:

将多个可迭代对象打包成元组,同步遍历对应位置元素。

语法:

 zip(序列1, 序列2, ...) 

代码示例:

names = ["张三", "李四", "王五"]
scores = [85, 92, 78]

# zip()遍历
for name, score in zip(names, scores):
    print(f"{name}的成绩:{score}分")
# 输出:
# 张三的成绩:85分
# 李四的成绩:92分
# 王五的成绩:78分