gpt4 book ai didi

python - 一行 for 循环用于具有变量增量和二维列表搜索的二维列表

转载 作者:行者123 更新时间:2023-12-01 04:21:30 28 4
gpt4 key购买 nike

我是 python oneliner 循环的新手。

我希望用户将数据输入到二维列表中,同时提醒他他们将输入的数据索引。我的代码是:

flag=0
x=[[int(input("enter the "+ str(flag)+ "number:")) flag+=1 for x in range(0,col)]for y in range(0,row)]

上面的代码显示语法错误。我应该如何在一行 for 循环旁边增加标志值。

接下来我想在二维列表中搜索整数值

x=[[0,3,2],[1,1,1],[9,2,2]]
for i,j in enumerate(x):
try:
y=j.index(1)
except ValueError:
continue
print(i,y)

上面的代码对于单个项目搜索效果很好,但我想要列表中每个 1 的索引。而上面的代码只返回它遇到的第一个“1”的索引,即“1 0”

提前谢谢您。

最佳答案

您的问题是列表理解必须产生一个值,并且您正在尝试执行其中的 flag +=1

如果你这样做会更清楚:

>>> flag = 0
>>> row = 1
>>> col = 3
>>> x=[[int(input("enter the number [{}][{}]:".format(y, x))) for x in range(0,col)] for y in range(0,row)]
enter the number [0][0]:1
enter the number [0][1]:2
enter the number [0][2]:3
>>> x
[[1, 2, 3]]

或者,要达到您想要的效果,您可以执行以下操作:

>>> y=[[int(input("enter the {} number:".format(x+y*row))) for x in range(0,col)]for y in range(0,row)]
enter the 0 number:1
enter the 1 number:2
enter the 2 number:3
>>> y
[[1, 2, 3]]

问题第二部分的更新:您可以为此使用更多列表理解:

>>> y=[[int(input("enter the {} number:".format(x+y*row))) for x in range(0,col)]for y in range(0,row)]
enter the 0 number:0
enter the 1 number:1
enter the 2 number:1
>>> y
[[0, 1, 1]]
>>> for arr in y:
... print [index for (index, val) in enumerate(arr) if val == 1]
...
[1, 2]

关于python - 一行 for 循环用于具有变量增量和二维列表搜索的二维列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33626697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com