Разделение почтовых индексов из списка - PullRequest
1 голос
/ 01 июня 2019

У меня есть список почтовых индексов, которые я хотел бы вернуть только первую его часть.

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 ]

2 голосов
/ 01 июня 2019

Вы перебираете список и добавляете его в каждую итерацию. Ваш цикл никогда не остановится (каждый элемент, над которым вы зацикливаетесь, добавляет в список еще один элемент) Вы должны использовать понимание списка для желаемого результата:

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']
1 голос
/ 01 июня 2019

Ваша проблема заключается в том, что вы добавляете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...