Как конкатенировать два элемента списка в Python?

У меня есть два списка, и я хочу объединить их по элементам. Один из списка подвергается форматированию строк перед конкатенацией.

Например :

a = [0, 1, 5, 6, 10, 11] b = ['asp1', 'asp1', 'asp1', 'asp1', 'asp2', 'asp2'] 

В этом случае a подвергается форматированию строк. То есть, новый a или aa должен быть:

 aa = [00, 01, 05, 06, 10, 11] 

Конечный результат должен быть:

 c = ['asp100', 'asp101', 'asp105', 'asp106', 'asp210', 'asp211'] 

Может кто-нибудь, пожалуйста, скажите мне, как это сделать?

Используйте zip :

 >>> ["{}{:02}".format(b_, a_) for a_, b_ in zip(a, b)] ['asp100', 'asp101', 'asp105', 'asp106', 'asp210', 'asp211'] 

Использование zip

 [m+str(n) for m,n in zip(b,a)] 

вывод

 ['asp10', 'asp11', 'asp15', 'asp16', 'asp210', 'asp211'] 

Другое решение (предпочитает стиль форматирования printf поверх .format() ), он также меньше:

 >>> ["%s%02d" % t for t in zip(b, a)] ['asp100', 'asp101', 'asp105', 'asp106', 'asp210', 'asp211'] 

не используя zip. Я не знаю, я думаю, что это очевидный способ сделать это. Может быть, я только что научился C сначала 🙂

 c=[] for i in xrange(len(a)): c.append("%s%02d" % (b[i],a[i])) 
 b = ['asp1', 'asp1', 'asp1', 'asp1', 'asp2', 'asp2'] aa = [0, 1, 5, 6, 10, 11] new_list =[] if len(aa) != len(b): print 'list length mismatch' else: for each in range(0,len(aa)): new_list.append(b[each] + str(aa[each])) print new_list 

То, что можно сделать элегантно с картой и почтовым индексом:

 map(lambda (x,y): x+y, zip(list1, list2)) 

Пример:

 In [1]: map(lambda (x,y): x+y, zip([1,2,3,4],[4,5,6,7])) Out[1]: [5, 7, 9, 11]