请帮助我。
例如,如果我有a = [2, 5, 8, 4]
和b = [1, 3, 6, 9]
。
我将如何使用“for”循环来选择'a'中的元素及其在'b'中的相应元素以用于其他函数?例如,在'a'中选择2并在'b'中选择1,然后在'a'中选择5,在'b'中选择3。
答案 0 :(得分:3)
你想要的是zip()功能:
创建一个聚合来自每个迭代的元素的迭代器。
你可以像这样使用它:
a = [2, 5, 8, 4]
b = [1, 3, 6, 9]
def another_function(x, y):
print(x, y)
for item_a, item_b in zip(a, b):
another_function(item_a, item_b)
你得到:
(2, 1)
(5, 3)
(8, 6)
(4, 9)
您还可以使用map()功能:
返回一个迭代器,将函数应用于 iterable 的每个项目,从而产生结果。
您的函数应返回一个值:
def another_function(x, y):
return x, y
result = map(another_function, a, b)
for item in result:
print(item)
你得到的结果相同。
答案 1 :(得分:0)
for x, y in zip(a, b):
some_func(x, y)
答案 2 :(得分:0)
您面临的情况称为“并行阵列”。维基百科有a great explanation and example code。
答案 3 :(得分:0)
如果您知道列表的长度相同,请使用zip
:
for a_elem, b_elem in zip(a, b):
# do stuff with the elements
如果您的列表长度不同,zip
将为您提供最短迭代长度的序列。如果您需要一个最长可迭代长度的序列,请使用itertools.izip_longest
。
答案 4 :(得分:0)
难道你不能只在一个定义函数的for循环中使用相同的位置访问一个接一个的元素吗?
def access_A_and_B(a,b,number)
for i in range(len(a)): #itterate through a until you find your number
if(a[i] == number and len(b) > i): # if a at position i is your number
return b[i] #ask b what the corresponding value is and return it
return -1 #default value if number not in a
号码:是您要搜索的号码