使用短版本的列表制作 python 一次列出 2 个项目



有没有办法使用制作列表的简短版本在一行列出 2 个项目。

例如,我想写类似的东西

G3 = [(i,j) for i in Primes and j in G2 if dig_sum(i,j) == True and con_test(i,j) == True ]

编辑:我应该提到这给了我错误

NameError: name 'j' is not defined

here i is an int and j is tuple

我的主要目的是得到类似的东西

G = [(i,j,k),(g,h,k)...]

我知道我的更新代码会给出类似的东西

G = [(i,(j,k)),(g,(h,k))...]

但我想我可以稍后更改它。

这是长版本

G3 = []
for i in Primes:
for j in G2:
if dig_sum(i,j) == True and con_test(i,j) == True:
G3.append((i,j[0],j[1]))
print(G3)

您可以使用*在元组中解压缩,并切换and,以便for在列表推导式中具有嵌套的 for 循环。您也不需要在if块中使用== True

G3 = [(i,*j) for i in Primes for j in G2 if dig_sum(i,j) and con_test(i,j)]

注意:这可能不适用于旧版本的Python。我不确定它是什么时候引入的。

最新更新