Переменная область в пределах понимания списка - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть список кортежей, который состоит из строки и другого списка;

[('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

Я не могу понять, используя понимание списка, чтобы получить что-то вроде:

[['string1a1', 'string1b1'],
 ['string2a2', 'string2b2'],
 ['string3a3', 'string3b3']]

Iпробовал что-то вроде

results = [join(ministring, i) for i in (miniarray for (ministring, miniarray) in myarray)]

, но я запутался в каждой области видимости переменных в расширении / выражении (?).

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Вы можете сделать что-то вроде этого:

data = [('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

result = [[s + e1, s + e2] for s, [e1, e2] in data]
print(result)

Вывод

[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

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

0 голосов
/ 21 ноября 2018

Попробуйте это:

new_list = list(map(lambda x: [x[0]+x[1][0], x[0]+x[1][1]],data))
0 голосов
/ 21 ноября 2018

Так просто:

lst = [('string1', ['a1', 'b1']),
 ('string2', ['a2', 'b2']),
 ('string3', ['a3', 'b3'])]

res = [[master + tail for tail in sublist] for master, sublist in lst]

, что возвращает:

[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

Обратите внимание, что при таком подходе длина подсписка внутри кортежа не является фиксированной.Это может быть сколь угодно долго.

...