【Python有坑】元组和小括号的误导

书上说元组就是被包含在小括号里面,不能被修改。列表是包含在中括号里面,可以被修改。

列表中可以嵌套列表,元组中可以嵌套元组,一般没人混用,这点测试无误:

 

>>> aa[0]
(12, 34)
>>> aa[0]=(1,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> aa[0][0]
12
>>> aa[0][0]=34
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

 

然而,在画图过程中使用了字典,无意中修改了“元组”的值:

 

>>> pos = {0: (20, 20), 1: (20, 40), 2: (40, 40), 3: (40, 20), 4: (30, 30)}
>>> pos
{0: (20, 20), 1: (20, 40), 2: (40, 40), 3: (40, 20), 4: (30, 30)}
>>> pos[0]=(1,2)
>>> pos
{0: (1, 2), 1: (20, 40), 2: (40, 40), 3: (40, 20), 4: (30, 30)}
>>>

然后在参考手册的dict搜索发现了这个:

 

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True

也就是说,在字典中value值无论用小括号、中括号、大括号括起来,它的值都可以被修改。

另一个误导是参考python中元组和小括号的关系,即元组是由逗号决定的,不是小括号。可以看到,即便没有了小括号,还是元组。

 

>>>a=("one","two")
>>>a[0]
'one'
>>>b=("one")
>>>b[0]
'o'
>>>c=("one",)

>>>c[0]
'one'
>>>d="one",
>>>d[0]
one

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值