我有一个包含一些国家和相关首都的清单。 我想只删除大写字母来创建一个新的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
我真的不明白为什么。有人能帮帮我吗?
答案 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。它遍历列表,仅选择那些没有“=”的条目。