列表理解 - 使用每个元素两次

时间:2017-07-10 10:23:13

标签: python

我有两个列表如下:

first = [1, 2, 3] # integers
second = ["A", "B"]

我想生成以下列表,交替使用A和B.请注意,生成的iterable比输入的iterable更长:

["1A", "1B", "2A", "2B", "3A", "3B"]

我目前正在使用itertools

[str(x1) + x2 for x1, x2 in itertools.product(first, second)]

但这是“最好的”方式吗?有没有需要导入的解决方案?

3 个答案:

答案 0 :(得分:5)

你可以尝试

>>> first = [1, 2, 3]
>>> second = ['A', 'B']
>>> ["{}{}".format(f, s) for s in second for f in first]
['1A', '2A', '3A', '1B', '2B', '3B']

答案 1 :(得分:2)

最好的方法是使用嵌套循环或使用itertools.product()但如果你想要一种功能方法,你可以使用itertools.starmapoperator.add和一些内置函数,例如{{1和} map()如下:

list()

答案 2 :(得分:1)

关于itertools.product的替代方案,请检查Arount's answer

现在关于字符串格式化,使用str(x) + y并不是非常Pythonic(根本不可扩展)。 相反,使用format字符串方法,甚至更好,使用Python 3.6&#39} {/ 3}}:

>>> "{}{}".format(x, y)
>>> "{firstValue}{secondValue}".format(firstValue=x, secondValue=y)
>>> f"{x}{y}"

以下是f-strings的链接。