优雅 VS 明显
说实话,我认为 Python 中的切片方式相当违反直觉,它实际上是 用更多的脑力处理来 优雅 这篇 StackOverflow 文章 有超过 2K 个赞,我想这是因为很多人最初并不理解它。
举个例子,下面的代码已经让很多 Python 新手头疼了。
x = [1,2,3,4]
print(x[0:1])
# Output is [1]
它不仅难以处理,也很难正确解释,例如,上面代码的解释是 取第零个元素直到第一个元素之前的元素 .
现在看看使用上限包容的 Ruby。
x = [1,2,3,4]
puts x[0..1]
# Output is [1,2]
坦率地说,我确实认为 Ruby 的切片方式对大脑更有益。
当然,当您根据索引将列表分成两部分时, 独占上限 方法会产生更好看的代码。
# Python
x = [1,2,3,4]
pivot = 2
print(x[:pivot]) # [1,2]
print(x[pivot:]) # [3,4]
现在让我们看看包容性 上限方法
# Ruby
x = [1,2,3,4]
pivot = 2
puts x[0..(pivot-1)] # [1,2]
puts x[pivot..-1] # [3,4]
显然,代码不太优雅,但这里不需要进行太多的脑力处理。
结论
归根结底,这其实是一个优雅与显而易见的问题,而 Python 的设计者更喜欢优雅而不是显而易见。为什么?因为 Python 之禅 认为 美丽胜过丑陋 .