小白python学习错误记录

1.

[False * 9] = [000...]

[False for _ in range(9)] = [False False False ....]

[False * 9]:结果是一个长度为1列表,值为一个字符串。

[False for _ in range(9)]:结果是一个长度为9的列表。

2. 

nums = [-1,4,3,1]
i=1
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]

i=1

k = nums[i]-1

nums[i], nums[k] = nums[k], nums[i]

结果分别为[4,1,3,1],[-1,1,3,4]。

nums[1], nums[nums[1]-1] = nums[nums[1]-1], nums[1]的赋值流程:

1) 先右边计算nums[nums[1]-1], nums[1] = 1, 4。

2)将1赋值给左边的nums[1],此时nums=[-1,1,3,1]。

3)将4赋值给左边的num[nums[1]-1],但是此时的nums[1]不是4而是1,所以nums[nums[1]-1]=nums[0],所以此时4被赋值给nums[0]。

总结:对于我这样的小白,如果在python中需要进行交换的值在多层嵌套中(eg. nums[nums[nums[]]]),解决办法:

a)使用传统的三段式进行交换。

b)把包含嵌套的要交换的值放在前面,nums[1], nums[nums[1]-1] = nums[nums[1]-1], nums[1]是错误的值,但是 nums[nums[1]-1], nums[1] = nums[1],nums[nums[1]-1]值是对的。因为nums[nums[1]-1]中的nums[1]的值还没有改变。所以只要先计算嵌套中的值就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值