我有一份邮政编码列表,我想只返回其中的第一部分。
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' ...]
但是我的内核不断循环,并且不返回任何内容。
答案 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)