Python实现购物列表按价格排序并移除价格的更简洁写法
更简洁的实现方式
当然有更简洁且Pythonic的实现方式,以下是几种方案:
方案1:列表推导式 + lambda 排序键
无需额外导入模块,一行代码完成排序和字段截断:
items = [item[:2] for item in sorted(items, key=lambda x: x[2])]
直接遍历sorted()返回的按价格(第三个元素)升序排列的列表,对每个元素取前两个字段生成新列表,一步到位替代原代码的排序+循环修改操作。
方案2:结合operator.itemgetter的列表推导式
如果偏好使用operator.itemgetter(处理大量数据时性能略优于lambda),可以保留导入但用列表推导简化后续操作:
import operator items = [item[:2] for item in sorted(items, key=operator.itemgetter(2))]
相比原代码的for i in range(len(items))循环,列表推导式更简洁可读,避免了手动索引操作。
原地修改版本(可选)
如果需要在原列表上直接修改而非创建新列表,可以这样写:
items.sort(key=lambda x: x[2]) # 原地排序 items[:] = [item[:2] for item in items] # 原地替换为截断后的元素
这些方案都比原实现更紧凑,同时保持了代码的可读性。
内容的提问来源于stack exchange,提问作者Kelly Bundy
相关产品推荐
相关产品推荐

