首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的列表切片语法问题

python中的列表切片语法问题
EN

Stack Overflow用户
提问于 2010-05-04 04:29:44
回答 2查看 2.7K关注 0票数 8

python的文档中提到了扩展索引语法。

代码语言:javascript
复制
slice([start], stop[, step])

当使用扩展索引语法时,也会生成切片对象。例如:a[start:stop:step]a[start:stop, i]。有关返回迭代器的备用版本,请参见itertools.islice()

a[start:stop:step]的工作原理如上所述。但是第二个呢?它是如何使用的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-04 04:47:56

a[start:stop,i]调用方法a.__getitem__((slice(start,stop,None), i))

如果a是一个列表,这将引发一个TypeError,但是如果a是一个numpy数组,则它是一个有效且有用的符号。事实上,我相信Numpy的开发人员要求Python的开发人员准确地扩展有效的Python切片表示法,以便可以更容易地实现numpy数组切片表示法。

例如,

代码语言:javascript
复制
import numpy as np
arr=np.arange(12).reshape(4,3)
print(arr)
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]]

1:3选择第1行和第2行,2选择第三列:

代码语言:javascript
复制
print(arr[1:3,2])
# [5 8]

PS。要尝试将哪个切片发送到__getitem__,您可以使用以下玩具代码:

代码语言:javascript
复制
class Foo(list):
    def __getitem__(self,key):
        return repr(key)

foo=Foo(range(10))
print(foo[1:5,1,2])
# (slice(1, 5, None), 1, 2)
票数 12
EN

Stack Overflow用户

发布于 2010-05-04 04:34:33

符号[:,:]用于对multidimensional arrays进行切片。默认情况下,Python没有任何多维数组,但是语法支持它,例如numpy就利用了这种语法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2761003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档