迭代列表中的每个元素,根据条件将其拆分

2024-10-01 02:27:42 发布

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

我有以下清单:

names = ['pipeline-1__YearBuilt',
    'pipeline-1__NumberofBuildings',
    'pipeline-1__NumberofFloors',
    'pipeline-1__PropertyGFATotal',
    'onehotencoder__x0_Low-Rise Multifamily',
    'onehotencoder__x0_Medical Office',
    'onehotencoder__x0_Mixed Use Property',
    'onehotencoder__x0_Office',
    'onehotencoder__x0_Other',
    'onehotencoder__x0_Refrigerated Warehouse',
    'onehotencoder__x5_Yes'
]

我想遍历列表中的每个元素来更改它(为了更好的可读性而清理它)

我想我已经很接近了,但当我尝试以下方法时,它不起作用:

for n in names:
    new = []
    if n.startswith('pipeline-1'):
        n = n.split('__', 1)[-1]
    else:
        n = n.split('__x', 1)[-1]
    new.append(n)

我只得到:

new = ['5_Yes']

我只想保留我绳子的最后一部分

如果有人能帮忙,请。谢谢


Tags: newpipelinenamesyeslowsplitofficerise
3条回答

我认为这将有助于你:

new = []
for n in names:
    if n.startswith('pipeline-1'):
        n = n.split('__', 1)[-1]
    else:
        n = n.split('__x', 1)[-1]
    new.append(n)

您的数组new在每个循环上都被覆盖,因此您只能看到最后一个元素。把它放在环的前面

new = []
for n in names:
    if n.startswith('pipeline-1'):
        n = n.split('__', 1)[-1]
    else:
        n = n.split('__x', 1)[-1]
    new.append(n)

如果new在循环内,循环的每次迭代都会将new重置为[]

[错误代码]

for n in names:
    new = []
    if n.startswith('pipeline-1'):
        n = n.split('__', 1)[-1]
    else:
        n = n.split('__x', 1)[-1]
    new.append(n)

通过这种方式,您可以创建一个名为newn次的新列表,其中n是名称长度

你必须这样做:

new = []
for n in names:

    if n.startswith('pipeline-1'):
        n = n.split('__', 1)[-1]
    else:
        n = n.split('__x', 1)[-1]
    new.append(n)

相关问题 更多 >