Как объединить два неравных ввода / списка в Python3 - PullRequest
0 голосов
/ 25 сентября 2018

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

Input1: James Ryan

Input2: John Becky William Isaac

Output: James John Ryan Becky William Isaac

Мой код в настоящее время

Enter1 = input('').split()
Enter2 = input('').split()
Enter3 = (' ').join(x for i in zip(Enter1, Enter2) 
for x in i)
print(Enter3)

Мой текущий код дает мне следующее:

Input1: James Ryan

Input2: John Becky William Isaac

Output: James John Ryan Becky

Я не совсемзнаю, что мне нужно сделать, чтобы добиться правильного результата.

Ответы [ 4 ]

0 голосов
/ 25 сентября 2018
from itertools import zip_longest

name3 = list(zip_longest(name1.split(), name2.split(), fillvalue = ''))
print(' '.join([j for i in name3 for j in i]))
James John Ryan Becky  William  Isaac

Если вы хотите использовать zip здесь, оно должно быть zip_longest из-за неравномерного размера двух

0 голосов
/ 25 сентября 2018

Я не знаю, почему большинство ответов имеют list1+list2, так как он просто добавит список (ы), который не является ожидаемым результатом.Вы можете попробовать что-то, как показано ниже.Принимая порядок по вашему примеру, при условии, что один элемент из меньшего списка, а другой из большего списка.

0 голосов
/ 25 сентября 2018

Вам нужно расширить меньший список, чтобы он стал такого же размера, как и другие.

delta = ans(len(Enter1) - len(Enter2))
lst_to_append = [''] * delta

if len(Enter1) < len(Enter2):
    Enter1.extend(lst_to_append)
else:
    Enter2.extend(lst_to_append)

Используйте свой код для Enter3 как есть.

0 голосов
/ 25 сентября 2018

Это просто уточнение ответа Ариханта:

Enter3 = Enter1 + Enter2
for all in Enter3:
    print(all)

Если вы хотите сохранить его как переменную:

output = []
for all in Enter3:
   output.append(all)
string_output = " ".join(output)
print(string_output)
...