我有两个不同的列表,我想组合
a = ['A','B','C']
b = [2,10,120]
所以期望的输出应该是这样的:
ab = ['A2','B10','C120']
我试过这个:
ab = [a [i] * b [i] for i in range(len(a))]
但我现在明白,只有当我想要乘以两个整数数组时,这才有效。那么我该怎么办才能获得上面所需的输出呢?
谢谢。
答案 0 :(得分:4)
与 To Click's 相同的想法,但稍有不同,您可以在解压缩项目后输入强制转换
>>> [str(y)+str(x) for y,x in zip(a, b)]
['A2', 'B10', 'C120']
答案 1 :(得分:1)
您可以使用zip()
执行此操作:
>>> zip(a, [str(i) for i in b])
[('A', '2'), ('B', '10'), ('C', '120')]
因此:
>>> a = ['A', 'B', 'C']
>>>
>>> b = [2, 10, 120]
>>> [y + z for (y, z) in zip(a, [str(i) for i in b])]
['A2', 'B10', 'C120']
>>>
在这个例子中,我们首先将b
中的每个整数转换为字符串,以便我们可以进行字符串连接,然后我们zip
a和b
一起,这样我们就可以了可以使用另一个列表理解和字符串连接轻松遍历新列表,以获得所需的结果。
答案 2 :(得分:0)
虽然zip()是首选的解决方案,但我相信你这样做的原始问题是:
您没有将整数转换为字符串(在“点击回答”中解决)
您没有添加字符串(在点击回答中仍然不正确)
如果数组的大小不同,可能会出现问题,zip()会解决这个问题。
答案 3 :(得分:0)
您无法乘以string
和int
值。您必须将两者转换为字符串格式,然后再转换为concatenate
。我执行了以下代码,它实际上按照你的要求输出。希望它有所帮助。不一定是最好的方式,但绝对是其中一种方法。
a = ['A', 'B', 'C']
b = [2, 10, 120]
ab=[]
for i in range(len(a)):
ab.append(a[i]+str(b[i]))
print ab
这是输出:
['A2', 'B10', 'C120']
答案 4 :(得分:0)
["".join(x) for x in zip(a, map(str, b))]
['A2', 'B50', 'C99']
或者更简单:
["%s%s" % x for x in zip(a, b)]
认为OP在期望的输出中具有引用的引用
答案 5 :(得分:0)
[elem+a[count] for count,elem in enumerate(b)]
使用枚举
尝试此操作