2014-03-13 23 views
3

说,如果我有:如何在串表单中添加列表的相应值?

code = 'aaaa' 
numbercode = '1234' 
Lcode = list(code) 
Lnumbercode = list(numbercode) 

而我想要的是:

a+1 
a+2 
a+3 
a+4 
+2

待办事项'''code'''和'''numbercode'''总是有相同数量的信吗? – wnnmaw

+0

我实际上想要8个字符,但认为只要输入4 – user3382238

+0

会更容易,但是它们都是8,或者有时候可能是7或9或56? – wnnmaw

回答

3

使用zip遍历两者同时进行的iterables:

In [21]: ['%s+%s'%(i, j) for i, j in zip(code, numbercode)] 
Out[21]: ['a+1', 'a+2', 'a+3', 'a+4'] 

,或者您可以使用maplambda as @wnnmaw提到,虽然这会提高TypeError如果codenumbercode具有不同的长度:

In [24]: map(lambda x,y: x+"+"+y, code, numbercode) 
Out[24]: ['a+1', 'a+2', 'a+3', 'a+4'] 
+0

括号内的21是什么? – user3382238

+0

@ user3382238它是'ipython' shell的提示符,就像cmdline python中的>>> >>> – zhangxaochen

+0

我会把它放在这里,因为它不比你的回答好,但它可以用''' 'map(lambda x,y:x +“+”+ y,list(code),list(numbercode))'''如果你喜欢''''lambda'''和''''''''''''''''''''''' – wnnmaw

2
map('+'.join, zip(code, numbercode)) 
+0

注意:这只适用于两个迭代长度相等的情况。如果它们不是,将会产生一个“TypeError”。 –

+0

@AlexThornton'zip'会将较长的序列截断为较短序列的长度,不会引发TypeError。但是,如果'numbercode = [1,2,3,4]','join'将不能在int上操作。 – IceArdor

+0

@IceArdor是真的,但'numbercode'不是,所以我们不必担心。 :) – kojiro

相关问题