2014-02-05 4 views
0

У меня есть список, содержащий некоторые страны и относительные столицы. Я хотел бы удалить только столицы, чтобы создать новый countryList [] и наоборот. Вот мой списокУдалить определенные элементы из списка в python

countryCapitalList= ['AFGHANISTAN=', 'KABUL', 'ALASKA=', 'JUNEAU', 'ALBANIA=', 'TIRANA', 'ALGERIA=', 'ALGERI'] 

Поскольку страны соответствуют четным числом я пытался таким образом:

i = 0 

    for x in countryCapitalList[:]: 
     del countryCapitalList[i] 
     i = i + 1 



    print countryCapitalList 

, но я получаю эту ошибку:

del countryCapitalList[i] 
IndexError: list assignment index out of range 

Я действительно не понять почему. Может кто-то мне помочь, пожалуйста?

ответ

1

для этого конкретного случая, просто удалить элементы с нечетным индексом:

In [1452]: countryList=countryCapitalList[:] 

In [1453]: del countryList[1::2] 

In [1454]: countryList 
Out[1454]: ['AFGHANISTAN=', 'ALASKA=', 'ALBANIA=', 'ALGERIA='] 
+0

Спасибо, это делает работу – leota

1

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

for x in countryCapitalList[:]: 
    if isCapital(x): 
      countryCapitalList.remove(x) 
0

Если все записи стран имеют «=» в них, и больше ничего не делает, чистый путь

countryCapitalList = [x for x in countryCapitalList if "=" not in x] 

Это использование list comprehensions. Он проходит через список, выбирая только те записи, в которых нет «=».

Смежные вопросы