Как мне заставить мою функцию вложенного цикла выполнять итерацию по всему (как минимум 2) списочным переменным и добавлять к новому выводу списка? - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь написать функцию, которая принимает 2 списка переменных, т.е. first_names и last_names.

Я использую вложенный цикл for в своей функции, чтобы перебрать оба списка и добавить значения, чтобы вернуть новый «комбинированный» список переменных.

Функция принимает два параметра списка, но перебирает только первое значение индекса [0] каждого списка и выводит, что - цикл заканчивается.

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names,last_names):
    combined = []
        for first in first_names:
            for last in last_names:
                combined.append(first+last)
                return combined

print(NameCombine(first_names,last_names))

Ожидаемый результат: DaveSmith, JamesJones, SteveJackson

Фактический объем производства: DaveSmith

Я ожидаю новый объединенный список как имени, так и фамилии в каждом индексе.

Но он возвращает первые два значения каждого списка, а затем цикл заканчивается.

Ответы [ 4 ]

2 голосов
/ 04 июля 2019

Вы можете комбинировать их с zip в пределах понимания:

def NameCombine(first_names,last_names):
    return [a+b for a, b in zip(first_names, last_names)]
0 голосов
/ 11 июля 2019

Так как большинство из них здесь отвечают конкретно на ваш вопрос.Я хотел бы добавить другой способ достижения решения этой проблемы, как показано ниже:

здесь я использовал map и add из операторского модуля

list(map(operator.add, first_names, last_names))
# ['DaveSmith', 'JamesJones', 'SteveJackson']
0 голосов
/ 04 июля 2019

Питон и понимание списка - мой любимый путь. Но если вы действительно хотите решение с использованием вложенного цикла, это будет работать для вас. Просто использовал ваш код и добавил дополнительное условие, чтобы печатать только желаемый результат.

Результаты этого решения: ['DaveSmith', 'JamesJones', 'SteveJackson']

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names,last_names):
  combined = []
  for first in first_names:
    for last in last_names:
      if first_names.index(first) == last_names.index(last):
        combined.append(first+last)
  return combined

print(NameCombine(first_names,last_names))
0 голосов
/ 04 июля 2019

Вы можете попробовать с этим кодом.

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names, last_names):
    combined = []
    for i in range(0, len(first_names)):
        if last_names[i] != None:
            combined.append(first_names[i] + " " + last_names[i])
        else:
            combined.append(first_names[i])
    return combined

print(NameCombine(first_names,last_names))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...