Python 我如何迭代这个列表?

Python 我如何迭代这个列表?,python,list,for-loop,tuples,Python,List,For Loop,Tuples,我有一个regexp,它返回这样的列表[('2','2','0')]。如何遍历上述列表中的每个项目 >>> for i in k: ... print i ... ('2', '2', '0') 当试图访问列表中的元素时,我们必须以这种方式访问 >>> k[0][0] '2' >>> 评论中的其他问题: 如何验证该元组中的每个元素?我试过这个: for i in k: print i for j in i: if

我有一个regexp,它返回这样的列表
[('2','2','0')]
。如何遍历上述列表中的每个项目

>>> for i in k:
...     print i
...
('2', '2', '0')
当试图访问列表中的元素时,我们必须以这种方式访问

>>> k[0][0]
'2'
>>> 
评论中的其他问题:
如何验证该元组中的每个元素?我试过这个:

for i in k:
  print i
  for j in i:
    if j == 2:
      print 'yes'
    else:
      print 'no' 

它是一个只有一个元素(元组)的列表。试着这样做:

for x in k[0]:
    print x
>>> k = [('2', '2', '0')]
>>> for i in k:
...     for j in i:
...         print j
...
2
2
0
您要求循环遍历列表的第一个元素,一个包含三个元素的元组

要回答评论中的问题,您的列表包含所有字符串

for x in k[0]:
    if x == '2':
        print 'yes'
    else:
        print 'sorry'
这将打印出来

yes
yes
sorry

看起来您要执行以下操作:

for i in k[0]:
这表示在
k
的第一个元素中的元素上循环,在本例中,这是一个循环。e、 g

如果你从一个正则表达式操作中得到一个元组列表,我想你是在打电话。请记住,您可能会返回一个以上元组的列表(如果字符串的多个部分与您的正则表达式匹配)。这可能是不可能的,例如,如果您的模式只能匹配字符串的开头(
^
)或结尾(
$
),但是值得注意的是,您的列表可能不止一个元素长,在这种情况下,您需要迭代内部和外部列表。考虑:

>>> k = [('2', '2', '0'), ('3', '3', '1')]
>>> for i in k[0]:
...   print(i)
...
2
2
0
这样我们就失去了第二个元素。如果不能确定列表的长度始终为一个元素,则需要一个内部循环,如下所示:

>>> for i in k:
...   print(i)
...   for j in i:
...     print(j)
...
('2', '2', '0')
2
2
0
('3', '3', '1')
3
3
1
这使我们能够访问每个元组(如
i
)以及每个元组的每个元素(如
j
)。您确切的用例将决定您需要上述哪一项,但这些都是基本选项



如何验证该元组中的每个元素

听起来“validate”的意思是“是值2”。请注意,元组包含要匹配的字符串的子字符串,但是示例中的条件,
if j==2:
,正在检查
j
是否为数字
2
。如果j='2':(注意引号),则可以将其更改为
,如果int(j)==2:
,则可以使用
将其转换为整数

for i in k:
  for j in i:
    print('yes' if j == '2' else 'no')

通过执行以下操作,可以迭代所有匹配项和每个匹配项的所有值:

for match in [('2', '2', '0')]:
    print match
    for value in match:
        print value

而且,正如您所提到的,您可以使用
match[0]
访问匹配的特定值。

您的regexp看起来像是返回一个列表,其中每个元素都是一个元组。您有一个元素,一个长度为3的元组,因此循环为:

for i in k[0]:
    print i

您有一个元组列表,在本例中,它只有一个元素

假设要循环的元组超过1个,则需要如下内容:

for x in k[0]:
    print x
>>> k = [('2', '2', '0')]
>>> for i in k:
...     for j in i:
...         print j
...
2
2
0
但是,如果您坚持只需要第一个元素,则可以消除内部循环:

>>> for i in k[0]:
...    print i
2
2
0

如果需要打印以外的其他用途,则应列出一个列表,然后根据需要访问:

list = []
for x in k:
    list.extend(y for y in x)

这涵盖了所有已回答的案例,并为您提供了一个要处理的列表。

您的regexp返回一个包含三个元素的元组的列表,因此您必须执行
k[0][0]、k[0][1]、k[0][2]
您的列表中有字符串,而不是整数。对于k[0]中的x,尝试这样做:如果x='2':打印'yes'否则:打印'sorry'如何验证该元组中的每个元素。我试过这个,因为I in k:print I for j in I:if j==2:print'yes'否则:print'no'@user3363550我编辑了你的问题,将你粘贴的代码包括在评论中。一般来说,请避免在评论中提出新问题;要么更新你的问题,要么最好发布一个新问题。我已经更新了我的答案来回答你的其他问题。