我有两个列表如下:
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)]
但这是“最好的”方式吗?有没有需要导入的解决方案?
答案 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.starmap
,operator.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的链接。