如何简化生成含累积单词list的字典数组的Python代码?
简化方案
方案1:使用enumerate简化循环
原代码的内层循环属于冗余操作,我们可以直接通过enumerate获取每个数字在数组中的位置(从1开始计数),然后对单词列表进行切片得到累积列表:
list_ = ['a','b','c'] array_ = [5,6,7] main_list = [] for idx, num in enumerate(array_, start=1): main_list.append({'number': num, 'letter_list:': list_[:idx]}) print(main_list)
方案2:列表推导式(最简洁)
利用Python的列表推导式可以把整个逻辑压缩为一行代码,可读性和简洁性兼顾:
list_ = ['a','b','c'] array_ = [5,6,7] main_list = [{'number': num, 'letter_list:': list_[:idx]} for idx, num in enumerate(array_, start=1)] print(main_list)
原代码冗余点说明
- 手动维护
count_x计数器完全没必要,enumerate可以直接返回带起始值的索引; - 内层循环遍历所有可能的切片长度再判断匹配,属于多余的计算,直接通过当前索引切片即可得到目标列表。
内容的提问来源于stack exchange,提问作者GreatFilter
相关产品推荐
相关产品推荐

