从Lis中拆分邮政编码

2024-09-22 10:22:40 发布

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

我有一个邮政编码的列表,我只想返回它的第一部分

postcodes = list(df['postcode'][0:10])

['EC4V 3EJ', 'SE1 9DW', 'W12 7EY', 'E14 9GA', 'E17 8ES', 'N10 3LR', 'W2 2RH', 'W3 7ST', 'W2 1PW', 'W4 5RG']

for p in postcodes:
    postcodes.append(p.split()[0])
postcodes

我希望得到这样的东西:

['EC4V', 'SE1', 'W12', 'E14' ...]

但是我的内核一直在循环,它不返回任何东西


Tags: df列表listpostcode邮政编码postcodesw3w2
2条回答

您在一个列表上循环,并在每次迭代中附加到它。你的循环永远不会停止(你循环的每个成员,你都会在列表中添加另一个元素)。您应该使用列表理解您想要的输出:

In [1]: l = ['EC4V 3EJ', 'SE1 9DW', 'W12 7EY', 'E14 9GA', 'E17 8ES', 'N10 3LR', 'W2 2RH', 'W3 7ST', 'W2 1PW', 'W4 5RG
   ...: ']

In [2]: [p.split()[0] for p in l]
Out[2]: ['EC4V', 'SE1', 'W12', 'E14', 'E17', 'N10', 'W2', 'W3', 'W2', 'W4']

您的问题是,在循环浏览邮政编码时附加到postcodes。所以你不可能在postcodes中循环所有的东西,因为你一直在为每个循环添加内容。相反,您可以创建一个新的空列表,例如modified_postcodes,您可以将每个修改后的邮政编码附加到该列表中:

modified_postcodes = []
for p in postcodes:
    modified_postcodes.append(p.split()[0])

print(modified_postcodes)

或者,您可以使用pythons map方法通过使用.split()postcodes中的每个邮政编码映射到其第一段:

postcodes = ['EC4V 3EJ', 'SE1 9DW', 'W12 7EY', 'E14 9GA', 'E17 8ES', 'N10 3LR', 'W2 2RH', 'W3 7ST', 'W2 1PW', 'W4 5RG']
res = list(map(lambda p : p.split()[0], postcodes))
print(res)

相关问题 更多 >