python - 这段代码的过程是什么,为什么答案是1?
问题描述
这个星期一我有我的第一次 Python 考试,我自然很紧张!我目前正在通过一些旧考试,出现了这个问题:
“终端上会出现以下代码的什么结果?”
x = [1, "two", 3, "four", 5, "six"]
(x+x)[x[2]:x[2] + x[4]][(x+x)[8]]
我对其进行了测试,答案是 1。但是,我似乎无法理解为什么。如果有人愿意解释这里的逻辑,将不胜感激!
解决方案
>>> x = [1, "two", 3, "four", 5, "six"]
>>> (x+x)[x[2]:x[2] + x[4]][(x+x)[8]]
1
现在这可以分为几个步骤。首先我们x
与自身连接,这将产生一个新的列表:
>>> (x+x)
[1, 'two', 3, 'four', 5, 'six', 1, 'two', 3, 'four', 5, 'six']
顺便说一句,这与x * 2
or相同2 * x
。
现在,自然地,x[2]
是索引 2 处的元素,或3
,并且x[4]
是5
。x[2] + x[4]
评估为8
。
现在我们按 elements 对串联列表进行切片[3:8]
,得到原始索引 3...7:
>>> (x+x)[x[2]:x[2] + x[4]]
['four', 5, 'six', 1, 'two']
最后,我们再次使用索引这个列表(x + x)[8]
- 这将返回连接列表的索引 8 处的元素,即 3。这用于从上一步中选择列表索引 3 处的元素1
,six
即two
.. .
推荐阅读
- go - 在 Go 操场上没有得到预期的结果
- typeorm - TypeORM - 将 take/limit 与 leftJoinAndSelect 一起使用未按预期工作
- python - web2py:检测下拉小部件的变化
- mysql - 无法在 sysdatabases 中找到数据库的条目
- java - Groovy 中的日期格式匹配
- html - 为什么 flexbox 在包裹项目时不向下推后续内容?
- firebase - 安装 firebase 失败 - 该操作被您的操作系统拒绝
- apache-spark - 警告:跳过远程 jar hdfs
- javascript - 如何使用角度计算表格中项目的长度
- css - 如何修复使用 CSS3 媒体查询时不正常的菜单?