Генерация кортежа из списка элементов в Python - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь создать список кортежей из большого списка.как я делаю это по-питонски?

c = ['A1','B1','C1','A2','B2','C2']

Требуемый вывод выглядит примерно так:

c = [('A1','A2'),('B1','B2'),('C1','C2')]

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

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Вы можете нарезать список на середину и затем сжать сам список:

list(zip(c, c[len(c)//2:]))
0 голосов
/ 11 декабря 2018

Без предположения о порядке или размере каждого кортежа, вы можете использовать collections.defaultdict.Это означает , что ваши буквы находятся в диапазоне AZ.

from collections import defaultdict

dd = defaultdict(list)

c = ['A1','B1','C1','A2','B2','C2']

for i in c:
    dd[i[:1]].append(i)

res = list(map(tuple, dd.values()))

print(res)

[('A1', 'A2'), ('B1', 'B2'), ('C1', 'C2')]
0 голосов
/ 11 декабря 2018

Если длина точно такая же, вы можете сделать это:

half = len(c) / 2
pairs = zip(c[:half], c[half:])

zip принимает два списка и возвращает список пар.Срезы относятся к первой половине списка и второй половине соответственно.

...