我正在编写代码来组织一些文本数据。在我的代码中,我需要检查一个字符串并删除其中包含该字符串的所有列表元素。以下是我的代码的一部分:
for i in range(0, len(split_data)):
if 'Vienna' in split_data[i]: #list index out of range
del split_data[i]
我理解错误(列表索引超出范围)意味着我使用索引超出列表范围调用值。但是,我有点困惑,因为我使用了len(split_data),这显然是列表的长度。如果有人能给我一些指导或建议,我将不胜感激。 [我是新手程序员]
以下是split_data中数据的子集: split_data~ ['538980','33','OFFICER'S CHOICE“,'1402','BDA LIMITED','12,EVERGREE INUDSTRIAL ESTATE,SHANKTI MILLS LANE,MAHALAXMI,MUMBAI - 400 011.','反对',' ','申请日期:29/10/1990','用户日期:','商品/服务:含有威士忌,品牌,GIN,RUM,VODKA和葡萄酒的酒类,包括33类。']
答案 0 :(得分:0)
循环遍历列表并删除元素
是一个坏主意您可以使用list comprehension
创建新列表
split_data = [x for x in split_data if 'Vienna' not in x]
或使用filter
split_data = list(filter(lambda x : 'Vienna' not in x, split_data))
答案 1 :(得分:0)
问题在于你给出的价值范围;在这里你要检查数组中的每个字符串,但是你在循环结束时进行了不必要的额外迭代,这导致程序给你一个错误。
Python引用从0开始的数组中的位置,并且假设您只想比较n个字符串,通过编写
for i in range(0, len(split_data)):
你正在进行n + 1次比较,这是不可能的。因此,只需减少在for循环中进行的比较次数,如下所示:
for i in range(0, len(split_data)-1):
希望有所帮助!