用列表嵌套python中的for循环
各位,我有两张名单用列表嵌套python中的for循环,python,loops,nested,Python,Loops,Nested,各位,我有两张名单 list1=['a','b'] list2=['y','z'] 我想将变量发送到如下函数: associate_address(list1[0],list2[0]) associate_address(list1[1],list2[1]) 我的剧本: for l in list1: for i in list2: conn.associate_address(i,l) 我收到以下输出: conn.associate_address(a,y) conn.asso
list1=['a','b']
list2=['y','z']
我想将变量发送到如下函数:
associate_address(list1[0],list2[0])
associate_address(list1[1],list2[1])
我的剧本:
for l in list1:
for i in list2:
conn.associate_address(i,l)
我收到以下输出:
conn.associate_address(a,y)
conn.associate_address(a,z)
我希望它看起来像这样:
conn.associate_address(a,y)
conn.associate_address(b,z)
list1=['a','b']
list2=['y','z']
for i, j in zip(list1, list2):
print(i, j)
使用该函数,如下所示:
conn.associate_address(a,y)
conn.associate_address(b,z)
list1=['a','b']
list2=['y','z']
for i, j in zip(list1, list2):
print(i, j)
输出:
('a', 'y')
('b', 'z')
使用该函数,如下所示:
conn.associate_address(a,y)
conn.associate_address(b,z)
list1=['a','b']
list2=['y','z']
for i, j in zip(list1, list2):
print(i, j)
输出:
('a', 'y')
('b', 'z')
我建议使用dict而不是2个列表,因为您显然希望它们关联起来 口述被解释 一旦你的口述设置好了,你就可以说
>>>mylist['a']
y
>>>mylist['b']
z
我建议使用dict而不是2个列表,因为您显然希望它们关联起来 口述被解释 一旦你的口述设置好了,你就可以说
>>>mylist['a']
y
>>>mylist['b']
z
你认为这是为什么
>>> for x in [1,2]:
... for y in ['a','b']:
... print x,y
...
1 a
1 b
2 a
2 b
嵌套循环将针对其父循环中的每个迭代执行。想想真值表:
p q
0 0
0 1
1 0
1 1
或组合:
Choose an element from a set of two elements.
2 C 1 = 2
Choose one element from each set, where each set contains two elements.
(2 C 1) * (2 C 1) = 4
假设您有一个包含10个元素的列表。使用for
循环对其进行迭代将需要10次迭代。如果有另一个包含5个元素的列表,则使用for
循环对其进行迭代将需要5次迭代。现在,如果嵌套这两个循环,则必须执行50次迭代,以覆盖每个列表元素的所有可能组合
你有很多选择来解决这个问题
# use tuples to describe your pairs
lst = [('a','y'), ('b','z')]
for pair in lst:
conn.associate_address(pair[0], pair[1])
# use a dictionary to create a key-value relationship
dct = {'a':'y', 'b':'z'}
for key in dct:
conn.associate_address(key, dct[key])
# use zip to combine pairwise elements in your lists
lst1, lst2 = ['a', 'b'], ['y', 'z']
for p, q in zip(lst1, lst2):
conn.associate_address(p, q)
# use an index instead, and sub-index your lists
lst1, lst2 = ['a', 'b'], ['y', 'z']
for i in range(len(lst1)):
conn.associate_address(lst1[i], lst2[i])
你认为这是为什么
>>> for x in [1,2]:
... for y in ['a','b']:
... print x,y
...
1 a
1 b
2 a
2 b
嵌套循环将针对其父循环中的每个迭代执行。想想真值表:
p q
0 0
0 1
1 0
1 1
或组合:
Choose an element from a set of two elements.
2 C 1 = 2
Choose one element from each set, where each set contains two elements.
(2 C 1) * (2 C 1) = 4
假设您有一个包含10个元素的列表。使用for
循环对其进行迭代将需要10次迭代。如果有另一个包含5个元素的列表,则使用for
循环对其进行迭代将需要5次迭代。现在,如果嵌套这两个循环,则必须执行50次迭代,以覆盖每个列表元素的所有可能组合
你有很多选择来解决这个问题
# use tuples to describe your pairs
lst = [('a','y'), ('b','z')]
for pair in lst:
conn.associate_address(pair[0], pair[1])
# use a dictionary to create a key-value relationship
dct = {'a':'y', 'b':'z'}
for key in dct:
conn.associate_address(key, dct[key])
# use zip to combine pairwise elements in your lists
lst1, lst2 = ['a', 'b'], ['y', 'z']
for p, q in zip(lst1, lst2):
conn.associate_address(p, q)
# use an index instead, and sub-index your lists
lst1, lst2 = ['a', 'b'], ['y', 'z']
for i in range(len(lst1)):
conn.associate_address(lst1[i], lst2[i])
当然,他们不应该调用变量
list
,因为那是python内置函数。当然,他们不应该调用变量list
,因为那是python内置函数。谢谢Richie。Zip只适用于一次迭代输出:conn.associate\u地址(a,y)@Chucks:那么您还有其他问题。我已经更新了我的答案,使之成为一个经过多次迭代的完整工作示例。(您是否正确缩进了代码?)如果@RichieHindle的答案解决了您的问题,您应该接受它。:)谢谢你,里奇。Zip只适用于一次迭代
输出:conn.associate\u地址(a,y)@Chucks:那么您还有其他问题。我已经更新了我的答案,使之成为一个经过多次迭代的完整工作示例。(您是否正确缩进了代码?)如果@RichieHindle的答案解决了您的问题,您应该接受它。:)如上所示的
for
循环将引发缩进错误。您一定是错误地复制了代码:如上文所述,PYourfor
循环将引发缩进错误。您一定是错误地复制了代码:P