1

伙计们-我有两个清单

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)
4

3 回答 3

6

使用该zip函数,如下所示:

list1=['a','b']
list2=['y','z']
for i, j in zip(list1, list2):
    print(i, j)

输出:

('a', 'y')
('b', 'z')
于 2013-06-20T20:50:52.237 回答
2

为什么你认为这是?

>>> 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])
于 2013-06-20T21:07:08.167 回答
0

我建议使用 dict 而不是 2 个列表,因为您显然希望它们相关联。

字典在这里解释

一旦你设置了你的听写,你就可以说

>>>mylist['a']
y
>>>mylist['b']
z
于 2013-06-20T20:52:04.500 回答