使用列表理解我可以创建像这样简单的东西
['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)]
,并不能完全切断芥末。
有关如何在一行中执行此操作的任何想法?
编辑:它在一条线上并不是最重要的,但它会很好。
答案 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)