从列表中拆分邮政编码

时间:2019-06-01 08:59:38

标签: python list loops split postal-code

我有一份邮政编码列表,我想只返回其中的第一部分。

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' ...]

但是我的内核不断循环,并且不返回任何内容。

2 个答案:

答案 0 :(得分:2)

您正在遍历列表,并在每次迭代中将其追加到列表中。循环永远不会停止(循环的每个成员,都将另一个元素添加到列表中)。您应该将列表理解用于所需的输出:

...

答案 1 :(得分:1)

您的问题是,您在循环浏览邮政编码时会附加到postcodes。因此,您将无法遍历postcodes中的所有内容,而每次循环都不断添加。相反,您可以创建一个新的空白列表,例如modified_postcodes,可以将每个修改后的邮政编码附加到以下位置:

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

print(modified_postcodes)

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

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)