Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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中从列表中简单地删除元素_Python_Filter - Fatal编程技术网

在python中从列表中简单地删除元素

在python中从列表中简单地删除元素,python,filter,Python,Filter,我想达到以下效果 a=[11, -1, -1, -1] msg=['one','two','tree','four'] msg[where a<0] ['two','tree','four'] 你可以用这个。您需要匹配使用该函数的两个列表中的项目。这将生成一个元组列表,其中每个元组包含来自每个原始列表的一项(即,[(11,'one'),…])。一旦得到这个结果,就可以迭代结果,检查第一个元素是否低于0,然后返回第二个元素。有关语法的更多详细信息,请参阅链接的Python文档 [y for

我想达到以下效果

a=[11, -1, -1, -1]
msg=['one','two','tree','four']
msg[where a<0]
['two','tree','four']
你可以用这个。您需要匹配使用该函数的两个列表中的项目。这将生成一个元组列表,其中每个元组包含来自每个原始列表的一项(即,
[(11,'one'),…]
)。一旦得到这个结果,就可以迭代结果,检查第一个元素是否低于0,然后返回第二个元素。有关语法的更多详细信息,请参阅链接的Python文档

[y for (x, y) in zip(a, msg) if x < 0]
你可以用这个。您需要匹配使用该函数的两个列表中的项目。这将生成一个元组列表,其中每个元组包含来自每个原始列表的一项(即,
[(11,'one'),…]
)。一旦得到这个结果,就可以迭代结果,检查第一个元素是否低于0,然后返回第二个元素。有关语法的更多详细信息,请参阅链接的Python文档

[y for (x, y) in zip(a, msg) if x < 0]
[m表示m,如果i<0,则在zip中为i(msg,a)]
[m代表m,如果i<0,则在zip(msg,a)中输入i]

已经发布的答案很好,但是如果您想要其他答案,您可以查看numpy及其阵列

>>> import numpy as np
>>> a = np.array([11, -1, -1, -1])
>>> msg = np.array(['one','two','tree','four'])
>>> a < 0
array([False,  True,  True,  True], dtype=bool)

>>> msg[a < 0]
array(['two', 'tree', 'four'], dtype='|S4')
>>将numpy作为np导入
>>>a=np.数组([11,-1,-1])
>>>msg=np.array(['one','two','tree','four']))
>>>a<0
数组([False,True,True,True],dtype=bool)
>>>味精[a<0]
数组(['two','tree','four',dtype='S4')

我不知道数组索引是如何在numpy中实现的,但它通常是快速的,而且可能会用C重写。与其他解决方案相比,这应该更可读,但它需要numpy。

已经发布的答案很好,但是如果您想要其他方法,可以查看numpy及其数组

>>> import numpy as np
>>> a = np.array([11, -1, -1, -1])
>>> msg = np.array(['one','two','tree','four'])
>>> a < 0
array([False,  True,  True,  True], dtype=bool)

>>> msg[a < 0]
array(['two', 'tree', 'four'], dtype='|S4')
>>将numpy作为np导入
>>>a=np.数组([11,-1,-1])
>>>msg=np.array(['one','two','tree','four']))
>>>a<0
数组([False,True,True,True],dtype=bool)
>>>味精[a<0]
数组(['two','tree','four',dtype='S4')


我不知道数组索引是如何在numpy中实现的,但它通常是快速的,而且可能用C重写。与其他解决方案相比,这应该更可读,但它需要numpy。

我认为[msg[I]代表范围内的I(len(a)),如果a[I]我认为[msg[I]代表范围内的I(len(a))如果a[I]假设你有一个输入错误,SilentGhost-第二个'for'应该是'in'如果你有一个输入错误,SilentGhost-第二个'for'应该是'in'我已经用map(lambda x:operator.itemgetter(x)(msg),[1,2,3])实现了这一点,但是如何得到这个:[1,2,3]你可以使用枚举(a)中的
[I for(I,j)]得到
[1,2,3]
如果j<0]
,但是
zip
解决方案更好。我对性能感兴趣,但我认为您的zip解决方案可能会更快。如果您正在处理大型列表并希望节省一些内存,则可以使用
itertools.izip
。我几乎用map(lambda x:operator.itemgetter(x)(msg),[1,2,3])但是如何得到这个:[1,2,3]你可以使用
[i为枚举(a)中的(i,j)(如果j<0)得到
[1,2,3]
,但是
zip
解决方案更好。我对性能感兴趣,但我认为您的zip解决方案可能会更快。如果您使用的是大型列表,并且希望节省一些内存,您可以使用
itertools.izip
。@Lukas您是否可以将我介绍的完成的解决方案附加到我的po下我自己的评论中st?回答得好,Lukáš。不幸的是,我们的编辑错了。(参见修订历史)我如何创建“a”列表是:a=map(lambda x:string.find(x,'one'),msg)你会提出更相关的建议吗?a=[m.find('one')表示msg中的m]或者直接[m表示msg中的m,如果'one'不在m中]@卢卡斯,你能不能把我介绍的完成的解决方案附加在我自己的帖子下的评论中?回答得好,卢卡斯。不幸的是,我们的编辑错了。(见修订历史。)我如何创建“a”列表是:a=map(lambda x:string.find(x,'one'),msg)你会提出更相关的建议吗?a=[m.find('one')代表msg中的m]还是直接如果“一”不在m中,请告诉我这将非常有帮助请告诉我这将非常有帮助
>>> import numpy as np
>>> a = np.array([11, -1, -1, -1])
>>> msg = np.array(['one','two','tree','four'])
>>> a < 0
array([False,  True,  True,  True], dtype=bool)

>>> msg[a < 0]
array(['two', 'tree', 'four'], dtype='|S4')