我有三个列表/数组:一个是布尔值列表,另两个是具有特定值的数组。 我的目标是在布尔列表中循环,如果值为true,则取第一个数组的第j个值并将其保存在解决方案数组中,如果值为false,则取第二个数组的第j个值并将其保存在解决方案数组中
这是我现在的解决方案:
j = 0
for comp, i in zip(boolean_list,range(len(boolean_list))):
if comp == False:
solutio_array[i] = first_array[j]
else:
solutio_array[i] = second_array[j]
j += 1
对于Python来说,这看起来太复杂和Fortran风格了。所以我的问题是,如何在Python中更有效地解决这个问题
谢谢你的帮助!我想提高我的Python技能,这种代码似乎太新手了
这些东西可以改进:
range(len(boolean_list))
并用结果压缩它。这就是enumerate
的目的李>j
,因为i==j
总是李>x == True
或x == False
——这是不好的做法。只要做if x
此外,您还遇到了一个错误—如果
comp
是False
,则代码从第一个数组中获取,而不是从第二个数组中获取总之,我会这样做:
或者,可能这个:
另一方面,如果您正在创建一个新的
solutio_array
,则可以完全避免使用i
:相关问题 更多 >
编程相关推荐