在python中从列表中删除特定元素
我有一份包含一些国家和相关首都的清单。 我只想删除大写字母,以创建新的countryList[]和viceversa。 这是我的清单在python中从列表中删除特定元素,python,list,Python,List,我有一份包含一些国家和相关首都的清单。 我只想删除大写字母,以创建新的countryList[]和viceversa。 这是我的清单 countryCapitalList= ['AFGHANISTAN=', 'KABUL', 'ALASKA=', 'JUNEAU', 'ALBANIA=', 'TIRANA', 'ALGERIA=', 'ALGERI'] 由于国家对应的是偶数,我尝试这样做: i = 0 for x in countryCapitalList[:]:
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
我真的不明白为什么。有人能帮我吗?对于这种特殊情况,只需删除具有奇数索引的元素:
In [1452]: countryList=countryCapitalList[:]
In [1453]: del countryList[1::2]
In [1454]: countryList
Out[1454]: ['AFGHANISTAN=', 'ALASKA=', 'ALBANIA=', 'ALGERIA=']
您得到的异常是因为您是按索引而不是按值删除的。列表在迭代过程中变短,因此索引不再有意义。相反,我会按值删除
for x in countryCapitalList[:]:
if isCapital(x):
countryCapitalList.remove(x)
如果您的所有国家/地区条目中都有“=”,而其他条目中没有“=”,则最干净的方法是
countryCapitalList = [x for x in countryCapitalList if "=" not in x]
这是在使用。它遍历列表,只选择其中没有“=”的条目 谢谢,这就行了