列表理解字符串交替模式递增

list comprehension string alternating patern incrementing

我正在尝试使用列表推导式生成一个单行线,以使用递增的边号生成交替模式,例如:

L = ['x0', 'y0', 'x1', 'y1', 'x2', 'y2']

到目前为止,我已经设法生成了这个:

>>> L = [f'x{i}' if i%2==0 else f'y{i}' for i in range(6)]
>>> print(L)
>>> ['x0', 'y1', 'x2', 'y3', 'x4', 'y5']

有人有什么建议吗?

你想使用相同的 i 两次,所以你需要另一个 嵌套循环 来对不同的字母使用 i 做同样的事情:

[f'{c}{i}' for i in range(6) for c in 'xy']

这是具有所需输出的单衬纸

["{}{}".format(j,i) for i in range(3) for j in ["x","y"]]

输出:

Out[3]: ['x0', 'y0', 'x1', 'y1', 'x2', 'y2']

它可能不可读,但假设您正在创建 oneliner,那么您不会追求可读性。

所以基本上你可以尝试在 for3 中嵌套 for{x,y} 的想法,这样你仍然可以获得 6 个元素,但是你可以在第一次迭代时做 x0,y0,在第二次迭代时做 x1,y1,x2, y2 在 3rd.

那么append(fstring)只是一个恭维,完成了整个过程。