如何将单个值附加到由列表理解在一行上创建的列表中?

2024-05-19 06:47:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图看看是否有可能将一个值附加到通过列表理解在同一行上创建的列表中

编辑:我正试图通过基本的python安装来实现这一点。没有进口

我所举的最接近实际的例子有两行

my_list = ['P' * 20 for i in range(105//20)]
my_list.append('P' * (105 % 20))

print(*my_list, sep='\n')

我试过这样的方法:

my_list = ['P' * 20 for i in range(105//20)].append('P' * (105 % 20))

print(*my_list, sep='\n')

但是由于append(),这会导致非类型错误

因此,我想知道是否有可能在我们建立清单的同时,以另一种方式实现这一目标

预期最终结果:

PPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPP
PPPPP

Tags: 方法in编辑列表formyrangesep
2条回答

您可以从105“p”s的字符串中提取切片

>>> [("P"*105)[i:i+20] for i in range(0, 105, 20)]
['PPPPPPPPPPPPPPPPPPPP', 'PPPPPPPPPPPPPPPPPPPP', 'PPPPPPPPPPPPPPPPPPPP', 'PPPPPPPPPPPPPPPPPPPP', 'PPPPPPPPPPPPPPPPPPPP', 'PPPPP']

尽管为了避免依赖于实现只创建一次105个字符的字符串,您可能应该在理解之前定义它

ps = "P" * 105
result = [x[i:i+20] for i in range(0, 105, 20)]

使用来自^{} documentationgrouper配方,您可以编写

result = [''.join(x) for x in grouper("P"*105, 20, '')]

append将不起作用,因为它会在中修改列表。您可以添加它们:

['P' * 20 for i in range(105//20)] + ['P' * (105 % 20)]

['PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPP']

虽然对于你想做的事,我会做一些类似的事情:

ps = 105
n = 20 
rows, r = divmod(ps, n)

['P'*n]*rows + ['P'*r]

['PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPPPPPPPPPPPPPPPPP',
 'PPPPP']

相关问题 更多 >

    热门问题