python 的列表是从0还是1开始的_为什么 python 从末尾索引列表时从索引 1 ( 与 0相对应) 开始?_list_酷徒编程知识库...

若要以另一种方式解释它,因为 -0 等于 0,如果向后从 0 开始,则对解释器不明确。

如果你对 - 进行了混淆,并寻找另一种方式进行反向索引,可以尝试 ~,它是前面的镜像:arr = ["a","b","c","d"]

print(arr[~0]) # d

print(arr[~1]) # c

〜的典型用法类似于"交换镜像节点"或"在排序列表中找到中位数":def reverse(arr):

for i in range(len(arr)//2):

arr[i], arr[~i] = arr[~i], arr[i]

def median(arr):

mid = len(arr)//2

return (arr[mid] + arr[~mid])/2

实际上 ~ 是反代码和补码的数学技巧,在某些情况下更容易理解。

关于是否应该使用 ~ 之类的python 技巧:

在我看来,如果它是由您自己维护的代码,您可以使用任何技巧来避免潜在的错误或实现目标更容易,因为可能具有高可读性和可用性。 但是在团队工作中,避免使用代码,可能给你的工作人员带来麻烦。

例如这里有一个来自 Stefan Pochmann的简洁代码,以解决这个问题。 从他的代码中我学到了很多。 但有些只是为了好玩,太使用了。def findStrobogrammatic(self, n):

nums = n % 2 * list('018') or ['']

while n> 1:

n -= 2

# n <2 is so genius here

nums = [a + num + b for a, b in '00 11 88 69 96'.split()[n <2:] for num in nums]

return nums

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值