What does a colon and comma stand in a python list?
我在一个python脚本list[:, 1]中遇到了这个问题,我正试图找出逗号的作用。
- 这是一个愚蠢的语法。docs.scipy.org/doc/numpy/reference/arrays.indexing.html文件
- 具体来说,该命令访问数据结构的两个不同维度(行和列)
- 此语法将引发TypeError: list indices must be integers, not tuple,因此我确信该对象不是常规的python列表。
- 嗯,你问关于列表的问题,但是它上面有numpy标记,而且你的语法只在numpy数组上工作,而不是在列表上工作。我假设您不理解numpy数组和python列表之间的区别,因此您的问题是什么?
- @使用eathstar ashwini添加了numpy标签,假设这是一个numpy数组。
- @戳"是",但问题中的语法也应该更改,因为它不是list[:,1]而是arr[:,1],因为现在它只会混淆人们。
- @最后用了硬盘,但还是不提问题…
- python的slice符号可能重复
- 你是对的,我现在意识到这确实是一个麻木的数组,而不是一个列表,因此必须是一个麻木的语法。明白了,谢谢你陪我!
一般来说:
调用__getitem__或__setitem__。(也有__getslice__和__setslice__,但现在已经不赞成了,所以我们不谈这个)。现在,如果somestuff中有逗号,python将把tuple传递给底层函数:
1
| foo[1,2] # passes a tuple |
如果有一个:,python将传递一个切片:
1 2 3 4
| foo[:] # passes `slice(None, None, None)`
foo[1:2] # passes `slice(1, 2, None)`
foo[1:2:3] # passes `slice(1, 2, 3)
foo[1::3] # passes `slice(1, None, 3) |
希望你能理解。现在,如果有逗号和冒号,Python将传递一个包含切片的元组。在您的示例中:
1
| foo[:, 1] # passes the tuple `(slice(None, None, None), 1)` |
对象(foo对输入的操作完全取决于对象。
- 老板的解释是:我刚刚读过pep8,我已经读到pet peeves的一部分,它说在slices中,colon:充当一个二元运算符,所以我立即在google上搜索更多内容并登陆到这里,现在我看到了当有多个对象时,订阅方法是如何在数字之间创建一个带有冒号的slice。
假设列表是一个二维(numpy)数组,如下所示:
[〔1, 2, 3〕,
〔4, 5, 6〕;
〔7, 8, 9〕
1 2 3 4 5 6 7 8
| list[1,1] --> 5 # it says select the element in position [1,1] (note that indexes start from zero)
list[:,1] --> [2,5,8]
list[1][1] --> 5
list[:][1] --> [4 5 6] |
有关更多示例,请参见此部分。