单线程从python中的单循环创建多个字符串

时间:2017-01-14 00:12:41

标签: python string

使用列表理解我可以创建像这样简单的东西

['X{}'.format(x) for x in range(2)]

产生['X0', 'X1']。但我想创建单独的和多个输出字符串,最好是从相同的列表理解语句。

我希望我的输出['X0','Y0','Z0','X1','Y1' 'Z1']自然像['X{},Y{},Z{}'.format(x,x,x) for x in range(2)],并不能完全切断芥末。

有关如何在一行中执行此操作的任何想法?

编辑:它在一条线上并不是最重要的,但它会很好。

5 个答案:

答案 0 :(得分:4)

以下是使用嵌套理解进行此操作的一种方法:

r = ['{}{}'.format(ch, x) for x in range(2) for ch in 'XYZ']
print(r)
# ['X0', 'Y0', 'Z0', 'X1', 'Y1', 'Z1']

答案 1 :(得分:3)

双重列表理解

reduce([ letter+str(number) for letter in 'ABC' for number in range(x)], [])

答案 2 :(得分:1)

还有一种方法(仍然是单行):

sum([['X{}'.format(x),'Y{}'.format(x),'Z{}'.format(x)] for x in range(2)],[])
# ['X0', 'Y0', 'Z0', 'X1', 'Y1', 'Z1']

答案 3 :(得分:1)

itertools

的帮助下
In [59]: ["{}{}".format(char,i) for i,char in itertools.product(range(2), "XYZ")]
Out[59]: ['X0', 'Y0', 'Z0', 'X1', 'Y1', 'Z1']

答案 4 :(得分:0)

试试这个:

List = ['{}{}'.format(Letter, Num) for Num in range(2) for Letter in 'XYZ']
print(List)