python从列表列表中选择范围
是否有一种pythonic(请不要用numpy!)方法从列表中选择列表的子集列表?在MATLAB中,我试图模仿的行为可以用python从列表列表中选择范围,python,list,Python,List,是否有一种pythonic(请不要用numpy!)方法从列表中选择列表的子集列表?在MATLAB中,我试图模仿的行为可以用A(2:7,5:8)这样的例子来说明 这不是家庭作业问题,只是在寻找一个干净的解决方案 下面是一个具体的例子: A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] select(A, (1, 3), (0, 3)) 应该让步 [[2, 3], [5, 6], [8, 9]] select(A,(1,3)、(0,3))可以实现为[0:3]中x的[x[
A(2:7,5:8)
这样的例子来说明
这不是家庭作业问题,只是在寻找一个干净的解决方案
下面是一个具体的例子:
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
select(A, (1, 3), (0, 3))
应该让步
[[2, 3], [5, 6], [8, 9]]
select(A,(1,3)、(0,3))
可以实现为[0:3]中x的[x[1:3]]
>>> A = [1, 2, 3],[4, 5, 6],[7, 8, 9]
>>> [x[1:3] for x in A[0:3]]
[[2, 3], [5, 6], [8, 9]]
>>>
select(A,(1,3)、(0,3))
可以实现为[0:3]中x的[x[1:3]]
>>> A = [1, 2, 3],[4, 5, 6],[7, 8, 9]
>>> [x[1:3] for x in A[0:3]]
[[2, 3], [5, 6], [8, 9]]
>>>
您可以将参数传递给切片:
def select(lst, subselect, select):
return [sublst[slice(*subselect)] for sublst in lst[slice(*select)]]
演示:
您甚至可以使用None
来指示切片的默认值(因此start
的0
和stop
参数的输入列表长度),或者只传入一个参数来指定stop
参数:
>>> select(A, (1, None), (3,))
[[2, 3], [5, 6], [8, 9]]
第三个参数提供了指定步幅的选项。如果步幅为负数,则列表反转:
>>> select(A, (1, None), (None, 3, 2))
[[2, 3], [8, 9]]
>>> select(A, (1, None), (None, None, -1))
[[8, 9], [5, 6], [2, 3]]
您可以将参数传递给切片:
def select(lst, subselect, select):
return [sublst[slice(*subselect)] for sublst in lst[slice(*select)]]
演示:
您甚至可以使用None
来指示切片的默认值(因此start
的0
和stop
参数的输入列表长度),或者只传入一个参数来指定stop
参数:
>>> select(A, (1, None), (3,))
[[2, 3], [5, 6], [8, 9]]
第三个参数提供了指定步幅的选项。如果步幅为负数,则列表反转:
>>> select(A, (1, None), (None, 3, 2))
[[2, 3], [8, 9]]
>>> select(A, (1, None), (None, None, -1))
[[8, 9], [5, 6], [2, 3]]
您能提供输入列表和预期输出吗?您可以使用递归切片,如:
myList[1][3]
为什么参数会导致预期输出像range
函数一样,包含第一个数字,第二个被排除。您能提供输入列表和预期输出吗?您可以使用递归切片,如:myList[1][3]
为什么参数会导致预期输出像range
函数一样,第一个数字被包含,第二个被排除。