Python 循环列表中的元组
我想用Python制作摩尔斯电码,所以我尝试了以下方法:Python 循环列表中的元组,python,loops,for-loop,Python,Loops,For Loop,我想用Python制作摩尔斯电码,所以我尝试了以下方法: L = [(2, 1), (8, 4, 2, 1)] data = "00:1:02" data = [(x[:1], x[1:]) for x in data.split(':') ] for [a,b] in data: if b=="": b, a = a, '0' #print(a,b) 现在,我正在寻找一种简单的方法,通过L列表中的两个元组循环,并将它们分开,使a通过L[0]元组和b通过L[1]元组 类
L = [(2, 1), (8, 4, 2, 1)]
data = "00:1:02"
data = [(x[:1], x[1:]) for x in data.split(':') ]
for [a,b] in data:
if b=="": b, a = a, '0'
#print(a,b)
现在,我正在寻找一种简单的方法,通过L
列表中的两个元组循环,并将它们分开,使a
通过L[0]
元组和b
通过L[1]
元组
类似于一个for循环中的内容:
for A in l[0], B in l[1]:
#A to do somethings with a and
#B to do something with b
我尝试了一些联合收割机,但没有找到正确的语法。任何人都可以提供建议吗?如果您想同时迭代
L[0]
和L[1]
,您可以使用:
for a, b in itertools.izip_longest(L[0], L[1]):
print a, b
上面将a
设置为None
,因为L[1]
比L[0]
长,因此在L[1]
中要迭代的值比在L[0]
中要多。这使得:
2 8
1 4
None 2
None 1
如果要同时迭代
L[0]
和L[1]
,可以使用:
for a, b in itertools.izip_longest(L[0], L[1]):
print a, b
上面将a
设置为None
,因为L[1]
比L[0]
长,因此在L[1]
中要迭代的值比在L[0]
中要多。这使得:
2 8
1 4
None 2
None 1
如果要同时迭代
L[0]
和L[1]
,可以使用:
for a, b in itertools.izip_longest(L[0], L[1]):
print a, b
上面将a
设置为None
,因为L[1]
比L[0]
长,因此在L[1]
中要迭代的值比在L[0]
中要多。这使得:
2 8
1 4
None 2
None 1
如果要同时迭代
L[0]
和L[1]
,可以使用:
for a, b in itertools.izip_longest(L[0], L[1]):
print a, b
上面将a
设置为None
,因为L[1]
比L[0]
长,因此在L[1]
中要迭代的值比在L[0]
中要多。这使得:
2 8
1 4
None 2
None 1
在您的示例中,
L
中的元组长度不同,当L[0]
已用尽,但L[1]
中仍有更多元素时,您希望采取什么行为?这是一个问题。这就是我的联合收割机不能工作的原因。我需要a和b分别登记两次和四次。但我想用更少的代码行来完成。这就是我变得如此复杂的原因。在您的示例中,L
中的元组长度不相同,当L[0]
已用尽,但L[1]
中还有更多元素时,您希望采取什么样的行为?这是一个问题。这就是我的联合收割机不能工作的原因。我需要a和b分别登记两次和四次。但我想用更少的代码行来完成。这就是我变得如此复杂的原因。在您的示例中,L
中的元组长度不相同,当L[0]
已用尽,但L[1]
中还有更多元素时,您希望采取什么样的行为?这是一个问题。这就是我的联合收割机不能工作的原因。我需要a和b分别登记两次和四次。但我想用更少的代码行来完成。这就是我变得如此复杂的原因。在您的示例中,L
中的元组长度不相同,当L[0]
已用尽,但L[1]
中还有更多元素时,您希望采取什么样的行为?这是一个问题。这就是我的联合收割机不能工作的原因。我需要a和b分别登记两次和四次。但我想用更少的代码行来完成。这就是我变得如此复杂的原因。