python中的[][](双方括号运算符)运算符是啥?
Posted
技术标签:
【中文标题】python中的[][](双方括号运算符)运算符是啥?【英文标题】:What is the [][] (double square brackets operator) operator in python?python中的[][](双方括号运算符)运算符是什么? 【发布时间】:2022-01-16 05:13:24 【问题描述】:我是 python 新手,我正在寻找在分配变量时执行三元运算的正确方法。
我发现有人建议这样的堆栈溢出帖子:
var = ['smaller', 'bigger'][7 > 1]
左边的值为False,右边的值为True
我运行它并且它有效。返回“更大”
但是这个语法是什么?它总是有效吗?是否已弃用?我用谷歌搜索了它,但在 python 文档或其他任何地方都找不到任何参考
谢谢
【问题讨论】:
['smaller', 'bigger']
是一个列表。 somelist[7 > 1]
正在从列表中获取一个元素。
@khelwood OMG 是的。非常感谢
【参考方案1】:
但是这个语法是什么?
第一对方括号是list display。第二对方括号是slicing。
它总是有效吗?
“总是”是一个很长的时间。没有办法知道一百万年后 Python 会是什么样子。
但是,据我所知,列表显示的语法和切片的语法在 Python 中都没有以向后不兼容的方式发生变化,至少在您的代码中是简单的基本形式。可能被扩展了,一些高级的形式也可能改变了,但基本的形式一直是一样的。
事实上,Python 中列表显示和切片的基本形式不仅在所有版本的 Python 中都是相同的,甚至在许多其他编程语言中也是如此。在受 ALGOL 启发的语言中,对列表/数组使用方括号几乎是通用的,在索引/下标/切片中使用方括号也是如此。
它被弃用了吗?
Deprecated section of the What's New In Python 3.10 document 和 currently under development 3.11 中均未提及弃用列表显示或当前列表显示语法、切片或当前切片语法。
我在任何Python Enhancement Proposals 中也找不到任何提及弃用列表显示或当前列表显示语法、切片或当前切片语法的内容。
因此,它们最早可能会在 Python 3.12 中被弃用,这意味着它们最早可以在 Python 3.13 中被删除。 然而,这几乎是不可能的,因为它会破坏曾经编写的每一个 Python 程序。这将比从 Python 2 到 Python 3 的转变(花了 12 年)更具破坏性。
我用谷歌搜索了它,但在 python 文档或其他任何地方都找不到任何参考
您可以在Python Language Reference 的章节Full Grammar Specification 中找到Python 的完整语法。
这是列表显示的语法:
list:
| '[' [star_named_expressions] ']'
对于切片:
primary:
| primary '.' NAME
| primary genexp
| primary '(' [arguments] ')'
| primary '[' slices ']'
| atom
slices:
| slice !','
| ','.slice+ [',']
slice:
| [expression] ':' [expression] [':' [expression] ]
| named_expression
【讨论】:
以上是关于python中的[][](双方括号运算符)运算符是啥?的主要内容,如果未能解决你的问题,请参考以下文章