#python #list #function
#питон #Список #функция #python
Вопрос:
У меня есть функция, которая должна принимать два параметра следующим образом
list_of_ids = [1,2,3]
list_of_names = [bob, joe, frank]
def function(id, name):
Аргументы функции поступают из этих двух массивов. Поэтому, когда он вызывается каждый раз, это будет похоже:
def function(1, bob)
def function(2, joe)
def function(3, frank)
Я попробовал пару циклов for, подобных этому:
for id in list_of_ids:
for name in list_of_names:
function(id, name)
Однако это не дает мне желаемого результата. Любая помощь будет оценена по достоинству.
Комментарии:
1.
zip()
затем списки повторяются
Ответ №1:
Вы можете использовать zip для объединения двух списков вместе.
Вот пример.
list_of_ids = [1,2,3]
list_of_names = ['bob', 'joe', 'frank']
def function(id, name):
return f'{id} {name}'
for id,name in zip(list_of_ids,list_of_names):
print(function(id,name))
#1 bob
#2 joe
#3 frank
zip создает объект ‘zip’, который является итеративным набором двух переданных ему списков / кортежей.
Ответ №2:
В случае, если эти списки содержат неравные элементы, их лучше обрабатывать в generator
, как показано ниже:
def generate_result(lst1,lst2):
counter = 0
while counter < len(lst1) or counter < len(lst2):
if counter >= len(lst1) :
yield ("NA",lst2[counter]) # Replace with actual function call
elif counter >= len(lst2) :
yield (lst1[counter],"NA") # Replace with actual function call
else:
yield (lst1[counter],lst2[counter]) # Replace with actual function call
counter = 1
list1 = [1,2]
list2 = ["John","James","Cat","Dog","Bed","Red","Some","More"]
for i in generate_result(list1,list2):
print(i)