一、列表推导式:用一行代码优雅处理数据
列表推导式是 Python 里超实用的 “懒人神器”,既能简化循环逻辑,又能让代码更简洁易读,日常处理列表数据超高频使用~
# 场景1:筛选100以内的偶数并乘以2
result = [i * 2 for i in range(100) if i % 2 == 0]
print(result[:5]) # 输出:[0, 4, 8, 12, 16]
# 场景2:将列表中所有字符串转为大写
words = ["python", "java", "go"]
upper_words = [word.upper() for word in words]
print(upper_words) # 输出:['PYTHON', 'JAVA', 'GO']
核心逻辑:[处理后的元素 for 元素 in 可迭代对象 if 筛选条件],比普通循环少写好几行,执行效率也更高。
二、字典的 get () 方法:优雅避免 KeyError
直接通过dict[key]取值容易因键不存在报错,get()方法可以指定默认值,是处理字典取值的 “安全感神器”~
# 场景:获取学生成绩,不存在的学生默认得0分
student_scores = {"小明": 90, "小红": 85}
# 常规取值(无默认值,键不存在返回None)
score1 = student_scores.get("小刚")
print(score1) # 输出:None
# 指定默认值,键不存在时返回默认值
score2 = student_scores.get("小刚", 0)
print(score2) # 输出:0
小技巧:批量处理字典取值时,搭配字典推导式使用get(),能一次性搞定多键取值,超省心。
三、解包操作:一行拆出多个值,超灵活
解包用*/**符号实现,能快速从列表、元组、字典中拆分数据,日常赋值、传参超实用~
# 场景1:列表解包赋值
nums = [10, 20, 30]
a, b, c = nums
print(a, b, c) # 输出:10 20 30
# 场景2:用*接收剩余值
first, *middle, last = [1, 2, 3, 4, 5]
print(first) # 输出:1
print(middle) # 输出:[2, 3, 4]
print(last) # 输出:5
# 场景3:字典解包传参
def print_info(name, age):
print(f"姓名:{name},年龄:{age}")
info = {"name": "小李", "age": 25}
print_info(**info) # 输出:姓名:小李,年龄:25
总结
- 列表推导式用一行代码完成 “循环 + 筛选 + 处理”,简洁高效;
- 字典
get()方法可指定默认值,避免 KeyError 报错; - 解包操作(
*/**)能灵活拆分数据,简化赋值和传参逻辑。