Python 包含数字的列表
我试图写一个循环,检查列表中的某个数字是否没有出现。例如:如果我有清单Python 包含数字的列表,python,list,Python,List,我试图写一个循环,检查列表中的某个数字是否没有出现。例如:如果我有清单 [[1,'O', 3], [4, 5, 6], [7, 8, 'X']] 我想写一个循环,检查数字2是否出现在其中一个列表中,如果没有,则要求您选择一个新数字。到目前为止,我一直坚持这一点: move = 2 for i in range(3): for j in range(3): if move not in board[i][j]: move = int(input("
[[1,'O', 3], [4, 5, 6], [7, 8, 'X']]
我想写一个循环,检查数字2
是否出现在其中一个列表中,如果没有,则要求您选择一个新数字。到目前为止,我一直坚持这一点:
move = 2
for i in range(3):
for j in range(3):
if move not in board[i][j]:
move = int(input("Number already taken. Pick another"))
但它不起作用。这似乎是一个相当简单的检查,但我不知道为什么它不会运行。有没有人有更好的建议如何检查这些列表中的给定数字
干杯尝试使用任何功能
m = [[1,'O', 3], [4, 5, 6], [7, 8, 'X']]
while True:
move = int(input('....'))
if any(move in row for row in m):
break
您可以使用:
更紧凑的版本:
numbers = (e for l in my_list for e in l)
move = 2 if 2 in numbers else int(input("Number already taken. Pick another"))
考虑到您的环境:
target = 2
list_of_lists = [[1,'O', 3], [4, 5, 6], [7, 8, 'X']]
我会用一条线做这样的事情:
True in [target in element for element in list_of_lists]
虽然Andrea的回答更简洁明了,但代码不起作用的原因是,您正在使用
不在比较器中比较两个变量,而比较器中的不在右边,它需要一个列表。更多信息请点击此处:
因此,要解决这个问题,要么删除内部循环并将move
与内部列表进行比较,要么改用等式
比较器。两个选项如下:
board = [[1,'O', 3], [4, 5, 6], [7, 8, 'X']]
move = 2
for i in range(3):
if move not in board[i]:
move = int(input("1: Number already taken. Pick another"))
for i in range(3):
for j in range(3):
if move == board[i][j]:
move = int(input("2: Number already taken. Pick another"))
它怎么不起作用?什么是板?我们可以推断,但如果你能提供一个。顺便说一句,欢迎来到SO!请查看和。如果要使用“移入集合”进行操作,请使用集合而不是int/str。board[i][j]不是集合,否则,如果不移动,请更改board[i][j],您可以将found=any([move in row for row in m])
替换为found=any(移入row for row in m)
它可以工作!谢谢然而,我现在面临的问题是:这不是一个循环,因为在第一次尝试之后,您仍然可以输入错误的号码。我尝试“whilenotfound”,但随后我进入了一个无限循环。如何将其放入正确的循环中?
board = [[1,'O', 3], [4, 5, 6], [7, 8, 'X']]
move = 2
for i in range(3):
if move not in board[i]:
move = int(input("1: Number already taken. Pick another"))
for i in range(3):
for j in range(3):
if move == board[i][j]:
move = int(input("2: Number already taken. Pick another"))