s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
Я хочу, чтобы эти сливались список вместе два элемента, как это:Как объединить списки на два вместе?
[['aaa','bbb'],['ccc','ddd']]
Пожалуйста, помогите мне. Я не знаю, как это сделать.
Спасибо
s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
Я хочу, чтобы эти сливались список вместе два элемента, как это:Как объединить списки на два вместе?
[['aaa','bbb'],['ccc','ddd']]
Пожалуйста, помогите мне. Я не знаю, как это сделать.
Спасибо
Вы можете использовать функцию range
, которая имеет синтаксис range(start, stop, step)
. Если вы одновременно набираете 2 элемента, вы можете использовать понимание списка, чтобы добавить пары подписок.
>>> [s[i] + s[i+1] for i in range(0, len(s), 2)]
[['aaa', 'bbb'], ['ccc', 'ddd']]
У вас возникнет небольшая проблема с этим решением. если длина S нечетна, у вас будет проблема «IndexError: list index out the range». item '- 0-> len (S) -1, поэтому он должен быть: range (0, len (s) -1, 2) или s [0 :: 2]/s [0 :: 1], как в других ответах. – user3378649
@ user3378649 В OP не указывалось, как обрабатывать списки нечетной длины. В этом случае ваше предложение не может быть желательным. – CoryKramer
Вы можете использовать map
с lambda
s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
res= map(lambda i:s[i]+s[i+1], range(0, len(s)-1, 2))
print res
Выход:
[['aaa', 'bbb'], ['ccc', 'ddd']]
Это хороший способ сделать это:
s_even = s[0::2]
s_odd = s[1::2]
merged = zip(s_even,s_odd)
Или короткая версия:
merged = zip(s[0::2], s[1::2])
, чтобы получить точный формат (список вместо кортежа, плоский лист используется):
# flatten list (NOTE: there are *way* more efficient ways)
s = sum(s, [])
# merge using same concept as above
merged = map(list, zip(s[0::2], s[1::2]))
In [1]: s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
In [2]: [ [ s[i*2][0], s[i*2 + 1][0] ] for i in range(len(s)/2) ]
Out[2]: [['aaa', 'bbb'], ['ccc', 'ddd']]
In [3]:
Проверить Python List Comprehension
возможно дубликат [Альтернативный способ разделить список на группы of n] (http://stackoverflow.com/questions/1624883/alternative-way-to-split-a-list-into-groups-of-n) – sshashank124