Python 如何根据多个相同的第一列元素对二维列表进行切片

Python 如何根据多个相同的第一列元素对二维列表进行切片,python,python-3.x,slice,Python,Python 3.x,Slice,我试图找出当有多个相同的第一个元素时,是否有一种有效的方法根据每个内部列表的第一个元素对2d列表进行切片 我没有用过numpy,事实上我以前从未用过,但我对它持开放态度。老实说,我可以想出一个非常麻烦的方法来做这件事没有它,但我希望有更多的效率 list_to_slice = [[1, 2], [2, 2], [2, 3], [3, 3]] 在本例中,我的目标是根据第一个元素对2d列表进行切片。目标输出为: [[1, 2], [2, 2], [2, 3]] 编辑: 好的,我要做的是用第一个元

我试图找出当有多个相同的第一个元素时,是否有一种有效的方法根据每个内部列表的第一个元素对2d列表进行切片

我没有用过numpy,事实上我以前从未用过,但我对它持开放态度。老实说,我可以想出一个非常麻烦的方法来做这件事没有它,但我希望有更多的效率

list_to_slice = [[1, 2], [2, 2], [2, 3], [3, 3]]
在本例中,我的目标是根据第一个元素对2d列表进行切片。目标输出为:

[[1, 2], [2, 2], [2, 3]]
编辑: 好的,我要做的是用第一个元素2分割原始列表的所有内部列表元素。从那里到列表的开头。这样做的基本命令是:

列表到切片[0:3]

我试图看看在numpy或其他地方是否有一个有效的命令,根据列表的内容而不是列表中的位置对列表进行切片。正如我所说,我可能会找到一种方法来实现这一点,我只是好奇在任何库中是否有一个更简单的命令可用


谢谢

我认为您试图使用第一个元素的索引来选择列表中的其他项目。下面是一个简单的解决方案

列表到切片=[[1,2]、[2,2]、[2,3]、[3,3]] 目标=列表到切片[0] 结果=[targets]+[list_to_slice[targets[0]]]+[list_to_slice[targets[1]] 打印结果 >>> [[1, 2], [2, 2], [2, 3]] 更通用的解决方案

def first_切片列表_到_切片: 目标=列表到切片[0] 结果=[目标] 对于目标中的目标: result.appendlist_to_slice[目标] 返回结果 第一个_切片[[1,2],[2,2],[2,3],[3,3]] >>> [[1, 2], [2, 2], [2, 3]] 是专门为这种东西做的。它将把列表变成一个itertator,从列表中获取值,直到条件不再为真,然后停止:

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]]

第四个列表元素[3,3]发生了什么?第一个元素对你意味着什么?通常,slice要么接受一个参数stop,要么接受三个参数start、stop、step。您是如何从输入列表中获取这些信息的?请正确定义您要实现的目标。现在还不清楚您是如何从示例输入中获得输出的,请听清楚,希望这能有所帮助。这正是我要寻找的!非常感谢你!