python中x = [4,3][2>1]为什么结果是3,请详细讲讲

如题所述

这个问题很有趣呀。

x = [2>1]
print(x)

首先[4,3]为一个列表,[2>1]也为一个列表为[Ture]。

p=[4,3]
i=2>1
print(p[i])

显然就相当于p=[4,3],而后相当于x=p[Ture],而这里的Ture可以理解为位置1(但只是可以这样理解,并不等同于1),即下标为1.同理可以看如下例子:

x=[4,3][2<1]
print(x)

显然当为Flase时,相当于下标为0,区第一个数值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-17
第一次看这么写的,居然也没有报错。个人理解等于3的原因是,2>1 返回的是True,在Python里,非空非0即为真,这个True也可以理解为1,所以[4,3][1]就是切片操作,取到3,当然,随着前面列表的不同,取到的值会相应变化。前面列表可以是任何值,比如['A','B'][2>1]得到的结果就是'B'追问

切片操作为什么取得是3而不是4

追答

python中,可迭代对象的下标从0开始

第2个回答  2019-05-17

[4,3][2>1] 等效于[4,3][True] 

[4,3][True]  等效于[4,3][1] = 3

本回答被提问者采纳
第3个回答  2019-05-17
2>1为逻辑值true,以这个true对[4,3]进行切片被当成1来使用。Python中可迭代对象索引从0开始,所以[4,3][1]向右偏移1位切片到的元素是3。
相似回答