我试图找出当存在多个相同的第一个元素时,是否存在一种根据每个内部列表的第一个元素对2d列表进行切片的有效方法。
我没有使用过numpy,实际上我以前从未使用过它,但我对此持开放态度。老实说,如果没有它,我可以想出一种非常麻烦的方法来实现此目的,但是我希望能提高效率。
list_to_slice = [[1, 2], [2, 2], [2, 3], [3, 3]]
在此示例中,我的目标是根据第一个元素对2d列表进行切片。目标输出为:
[[1, 2], [2, 2], [2, 3]]
编辑:
好的,我要做的是将原始列表的所有内部列表元素与第一个元素“ 2”一起切片。从那里到列表开头的所有内容。这样做的基本命令是:
list_to_slice [0:3]
我试图查看在numpy或其他地方是否有有效的命令根据其内容而不是其在列表中的位置对列表进行切片。就像我说的那样,我可能会找到一种方法来实现这一点,我很好奇,如果那里的任何库中都有一个更简单的命令可用。
谢谢!
最佳答案
itertools.takewhile
是专门为这种事情制作的。它将把您的列表变成一个迭代器,该迭代器从列表中获取值,直到条件不再成立,然后停止:
from itertools import takewhile
list_to_slice = [[1, 2], [2, 2], [2, 3], [3, 3]]
sl = takewhile(lambda t: t[0] < 3, list_to_slice) # take items while first element is less than 3
list(sl)
# [[1, 2], [2, 2], [2, 3]]
关于python - 如何根据多个相同的第一列元素切片二维列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57296715/