如何解决如何删除一个列表的 None 值和另一个列表的等效值?
我一直在努力解决这个问题。我想要做的是从列表中删除 None 值,例如:
list1 = [2,3,4,None,2,5]
我还有其他列表,这些列表的值与 list1 值相关(想象一下 list1 是天,另外两个是这些列表中发生的事情):
list1 = [2,5]
list2 = ['red','blue','white','red','blue']
我想从另一个列表中删除 None 值和 red。所以我希望它们看起来像:
list1 = [2,'blue']
我尝试过的如下:
for j in array_length(list1):
if list1[j] is None: #if value is None
print("Missing values. Omitting day.")
del list1[j] #deleting that day from all datasets
del list2[j]
其中 array_length 是我创建的一个函数,用于为我提供从 0 到我要定位的列表长度的数组。上面的代码不起作用,因为它给了我以下错误:
IndexError: list index out of range
我认为正在发生的是索引没有正确更新,但我不知道如何解决或绕过它。
解决方法
问题是因为您在循环时从列表中删除了项目。所以当你开始循环时,列表的长度是 7,但是因为你在中间删除了一个项目,循环在最后阶段超出了索引。 教训:在循环中使用列表时不要从列表中删除。
但这里有一种方法可以做到这一点而不会导致错误
list1 = [2,3,4,None,2,5]
list2 = ['red','blue','white','red','blue']
for i,val in enumerate(list1):
if val is None:
del list1[i]
del list2[i]
,
你可以用zip
试试all
list1 = (2,5)
list2 = ('red','blue')
l = [i for i in zip(list1,list2) if all(i)]
l1 = [i[0] for i in l]
l2 = [i[1] for i in l]
print(l1,l2)
[2,5]
['red','blue']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。