Python 我如何迭代这个列表?
我有一个regexp,它返回这样的列表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
[('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我编辑了你的问题,将你粘贴的代码包括在评论中。一般来说,请避免在评论中提出新问题;要么更新你的问题,要么最好发布一个新问题。我已经更新了我的答案来回答你的其他问题。