我是Python新手,我正在尝试检查列表[a,b]
中是否存在l=[[a,b],[c,d],[d,e]]
对。我搜索了很多问题,但找不到精确的解决方案。请有人能告诉我正确和最短的方式吗?
我跑的时候:
a=[['1','2'],['1','3']]
for i in range(3):
for j in range(3):
if [i,j] in a:
print a
输出是空白
如何实现这一目标呢?
答案 0 :(得分:15)
以下是一个例子:
>>> [3, 4] in [[2, 1], [3, 4]]
True
如果您需要这么做,请考虑使用 set
,因为它有更快的遏制检查。
答案 1 :(得分:4)
代码不起作用,因为'1' != 1
因此['1','2'] != [1,2]
如果您希望它工作,请尝试:
a=[['1','2'],['1','3']]
for i in range(3):
for j in range(3):
if [str(i), str(j)] in a: # Note str
print a
(但使用in
或已经提到的设置更好)
答案 2 :(得分:0)
在我的解释器(IPython 0.10,Python 2.7.2+)中,您的代码提供了正确的输出:
In [4]: a=[[1,2],[1,3]]
In [5]: for i in range(3):
...: for j in range(3):
...: if [i,j] in a:
...: print a
...:
[[1, 2], [1, 3]]
(这应该是评论,但我还不能留下它们。)
编辑:
原来你在a
列表中有字符串。
然后,您还需要将int
转换为str
:
a=[['1','2'],['1','3']]
for i in range(3):
for j in range(3):
if [str(i), str(j)] in a:
print a
答案 3 :(得分:0)
此代码适用于我:
>>> a = [[1, 2], [3, 4], [13, 11]]
>>>
>>> for i in range(10):
... for j in range(10):
... if [i, j] in a:
... print [i, j]
...
[1, 2]
[3, 4]
>>>
我不确定您的代码有什么问题。确定你在第一行中缺少']'。
答案 4 :(得分:0)
不要忘记[a,b]不是python中的[b,a],所以如果你想考虑[A,B]和[B,A],你可能想要在你的元组中订购2个值是一样的:
如果列表很大且有冗余,您可能还想使用set(your_list)。
在您的代码示例中,您将比较整数和字符串:
['1', '2'] # this is a 2-list of strings '1' and '2'
[1, 2] # this is a 2-list of integers 1 and 2