【发布时间】:2017-02-09 14:54:02
【问题描述】:
在 Python (3.5) 中,如果我有一个像这样的长列表:
long_list = ['0','1','0','1','0','0'.'0'.'1','1','0']
还有一个长度等于 long_list 中 '1' 数量的较短列表,如下所示:
short_list = [8,7,6,5]
我将如何创建一个新列表,将我的 short_list 的值“插入”到我的 long_list 中的每个索引处,其中有一个“1”,并且为了保持一致性,将 long_list 中的“0”“替换”为一些数字(比如 99)。
我可以通过令人痛苦的 for 循环来做到这一点,但似乎应该有一种方法可以通过列表理解更有效地做到这一点,不是吗?
# bad solution
new_list = []
x = 0
for i in range(len(long_list)):
if long_list[i] == '0':
new_list.append(99)
else:
new_list.append(short_list[x])
x += 1
期望的输出:
new_list = [99,8,99,7,99,99,99,6,5,99]
【问题讨论】:
-
你确定
short_list中的值总是和long_list中的'1'一样多吗? -
是的,对于这个应用程序有。短名单来源于长名单。可能有太多信息无法解释实际用法(上面的示例是基于真实数据的玩具示例),但我确信短列表中的值与 '1' 的数量完全相同。
标签: python list for-loop list-comprehension