Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Errno 13列表索引超出范围,尽管使用了len()BIF_Python_List_Indexing_Range - Fatal编程技术网

Python Errno 13列表索引超出范围,尽管使用了len()BIF

Python Errno 13列表索引超出范围,尽管使用了len()BIF,python,list,indexing,range,Python,List,Indexing,Range,我正在编写代码来组织一些文本数据。在我的代码中,我需要检查一个字符串并删除其中包含该字符串的所有列表元素。以下是我的代码的一部分: for i in range(0, len(split_data)): if 'Vienna' in split_data[i]: #list index out of range del split_data[i] 我理解错误(列表索引超出范围)意味着我正在使用列表范围之外的索引调用一个值。然而,我有点困惑,因为我使用了len(spli

我正在编写代码来组织一些文本数据。在我的代码中,我需要检查一个字符串并删除其中包含该字符串的所有列表元素。以下是我的代码的一部分:

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_数据中的数据子集:
split_data~['538980','33','OFFICER'S CHOICE','1402','BDA LIMITED','12,EVERGREE INUDSTRIAL ESTATE,SHANKTI MILLS LANE,MAHALAXMI,MUMBAI-400011','反对','','申请日期:1990年10月29日','用户日期:','商品/服务:酒精饮料,包括威士忌、白兰地、杜松子酒、朗姆酒、伏特加酒和33类葡萄酒。']在列表中循环并删除元素是个坏主意

您可以使用
列表理解
创建新列表

split_data = [x for x in split_data if 'Vienna' not in x]
或者使用
过滤器

split_data = list(filter(lambda x : 'Vienna' not in x, split_data))

在列表中循环并删除元素是个坏主意

您可以使用
列表理解
创建新列表

split_data = [x for x in split_data if 'Vienna' not in x]
或者使用
过滤器

split_data = list(filter(lambda x : 'Vienna' not in x, split_data))

问题在于你给出的价值范围;在这里,您希望检查数组中的每个字符串,但是在循环结束时进行了不必要的额外迭代,这会导致程序给您一个错误

Python引用从0开始的数组中的位置,并且假设您只想通过编写

for i in range(0, len(split_data)):
您正在进行n+1比较,这是不可能的。因此,只需减少for循环中的比较次数,如下所示:

for i in range(0, len(split_data)-1):

希望有帮助

问题在于您给出的值的范围;在这里,您希望检查数组中的每个字符串,但是在循环结束时进行了不必要的额外迭代,这会导致程序给您一个错误

Python引用从0开始的数组中的位置,并且假设您只想通过编写

for i in range(0, len(split_data)):
您正在进行n+1比较,这是不可能的。因此,只需减少for循环中的比较次数,如下所示:

for i in range(0, len(split_data)-1):

希望有帮助

并且您确定您的拆分数据列表不是空的。您可以显示使用拆分数据中的内容吗?删除循环中的元素将更改实际列表的长度。尝试在列表的副本上循环。切勿在列表上循环并同时删除元素。可能存在重复,并且您确定拆分数据列表不是空的。是否可以显示使用拆分数据中的内容?删除循环中的元素将更改实际列表的长度。尝试在列表副本上循环。切勿在列表上循环并同时删除元素。每个状态可能都需要一些标志,例如:
-1个零长度列表,-2个不可编辑项等。
。是。我认为这是一个更好的方法。谢谢。每个状态都需要一些标志,如:
-1个零长度列表,-2个不可编辑项等。
。是的。我认为这是一个更好的方法。非常感谢。