使用循环编辑列表中的项目

2024-10-06 12:25:19 发布

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

我的列表中有超过30个字符的项。我想循环浏览整个列表,使每个项目最多30个字符。我使用此代码手动更改列表中的第一项,以获得以下结果:

sites = [
    '520 Slick Boat Ramp (Banana Riv',
    'Eau Gallie Pier (Indian River)',
    'Geiger Point; Melbourne Causeway at (Indian River)',
    'Kelly Park (Banana River)',
    'NASA Causeway; SE side of (Indian River)',
    'Parrish Park Boat Ramp (Indian River)',
    'Port St. John Boat Ramp (Indian River)',
    'Ramp Road Park Boat Ramp (Banana River)'
]


sites[0]=sites[0][0:31]

Tags: 项目代码park列表手动sitesbananaindian
2条回答

如果您想简单地将每个字符串切掉30个字符,可以执行以下操作:

for s in sites:
    sites[sites.index(s)] = s[:30]

sites = [s[:30] for s in sites]

(谢谢伊瓜加特)

如果要筛选列表,以便只筛选长度小于30个字符的字符串,则可以执行以下操作

sites = filter(lambda x: len(x) <= 30, sites)

编辑: 正如John Coleman所说,使用sites.index(s)并不是真正有效的,因此如果您想使用for循环,最好使用Błotosmętek描述的方法:

for i in range(let(sites)):
    sites[i] = sites[i[:30]]

有几种可能的方法。最优雅的是Iguanaaut的评论,并使用了列表理解。但是,如果出于任何原因不想使用列表理解,则需要使用for循环,如下所示:

for i in range(len(sites)):
   sites[i] = sites[i][:30]

或者这个:

for i, s in enumerate(sites):
    sites[i] = s[:30]

虽然第一种方法更为常见,但第二种方法被认为更具python风格。根据我的测试,它也稍微快一点,但这可能取决于Python版本

相关问题 更多 >