Как скопировать и добавить множественную строку из списка в другой список - PullRequest
0 голосов
/ 23 апреля 2020

Допустим, у меня есть список ниже:

list1 = ['jenny', 'bob', 'dan']

Я хотел бы скопировать каждый элемент в списке1 во второй список, чтобы он был таким:

list2 = [('jenny', 'bob'), ('bob','dan'),('dan','jenny')]

#This is my code:
list2=[]
for i in range(len(list2)):
    list2 += list1[i]

print(list2)

беда в том, что мой код не мог даже скопировать слово в список2, но вместо этого он копирует символ с помощью символа.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вот возможное решение. list2 построен с i-м и (i + 1) -ым элементами:

list1 = ['jenny', 'bob', 'dan']
list2 = [(el1, el2) for el1, el2 in zip(list1, list1[1:]+[list1[0]])]

вывод:

[('jenny', 'bob'), ('bob', 'dan'), ('dan', 'jenny')]
0 голосов
/ 23 апреля 2020

Вы можете использовать itertools.combinations(), чтобы получить комбинации:

list1 = ['jenny', 'bob', 'dan']
list2 = list(itertools.combinations(list1, r=2))
print(list2)

Вывод:

[('jenny', 'bob'), ('jenny', 'dan'), ('bob', 'dan')]

Если вы хотите связать каждого со следующим элементом (возвращаясь к конец l oop), вы можете использовать по модулю %:

list1 = ['jenny', 'bob', 'dan']
list2 = []
for i, name in enumerate(list1):
    name2 = list1[(i+1) % len(list1)]
    list2.append((name, name2))

Выход:

[('jenny', 'bob'), ('bob','dan'),('dan','jenny')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...