从python中的列表中删除特定元素

时间:2014-02-05 16:54:30

标签: python list

我有一个包含一些国家和相关首都的清单。 我想只删除大写字母来创建一个新的countryList []和反之亦然。 这是我的清单

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

我真的不明白为什么。有人能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

对于这种特殊情况,只需删除奇数索引的元素:

In [1452]: countryList=countryCapitalList[:]

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

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

答案 1 :(得分:1)

您获得的异常是因为您按索引而不是按值删除。迭代期间列表越来越短,因此索引不再有意义。相反,我会按值删除

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

答案 2 :(得分:0)

如果您所有的国家/地区条目中都包含“=”,而其他任何内容都没有,那么最简洁的方法就是

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

这是使用list comprehensions。它遍历列表,仅选择那些没有“=”的条目。