gpt4 book ai didi

python从列表列表中选择范围

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:36 24 4
gpt4 key购买 nike

是否有一种 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]]

最佳答案

您可以将参数传递给切片:

def select(lst, subselect, select):
return [sublst[slice(*subselect)] for sublst in lst[slice(*select)]]

演示:

>>> def select(lst, subselect, select):
... return [sublst[slice(*subselect)] for sublst in lst[slice(*select)]]
...
>>> A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> select(A, (1, 3), (0, 3))
[[2, 3], [5, 6], [8, 9]]

您甚至可以使用 None 来指示切片的默认值(因此 0 用于 start 和输入列表的长度 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]]

关于python从列表列表中选择范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com