首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么slice和range的上限是互斥的?

为什么slice和range的上限是互斥的?
EN

Stack Overflow用户
提问于 2012-07-06 22:49:36
回答 6查看 23.3K关注 0票数 51

免责声明:我不是在问如果上限stop论证slice()range()是异或方法使用这些函数。

调用rangeslice函数,以及切片表示法[start:stop]

都是指整数集。

代码语言:javascript
运行
复制
range([start], stop[, step])
slice([start], stop[, step])

在所有这些中,stop不包括整数。

我想知道为什么这门语言就是这样设计的。

是为了让stop等于表示的整数集合中的元素数start等于0还是省略?

它是不是要有:

代码语言:javascript
运行
复制
for i in range(start, stop):

看起来像下面的C代码吗?

代码语言:javascript
运行
复制
for (i = start ; i < stop; i++) {
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-06 22:59:45

The The The文档这意味着它有一些有用的属性:

代码语言:javascript
运行
复制
word[:2]    # The first two characters
word[2:]    # Everything except the first two characters

下面是切片操作的一个有用的不变量:

s[:i] + s[i:]等于s..。

对于非负索引,如果两个索引都在界限内,则切片的长度是索引的差。例如,word[1:3]是2..。

我认为,为了保持一致性,我们可以假设范围函数的作用是相同的。

票数 46
EN

Stack Overflow用户

发布于 2014-01-31 21:59:44

下面是意见某个Google+用户的:

..。我被半开音程的优雅所打动。特别是当两个切片相邻时,第一个切片的结束索引就是第二个切片的开始索引,这一不变量太漂亮了,无法忽略。例如,假设您将一个字符串在索引i和j处拆分为三个部分--这些部分将是一个:i,ai:j,和一个j:..。

Google+已关闭,因此链接不再起作用。剧透提醒:那是Guido van Rossum。

票数 25
EN

Stack Overflow用户

发布于 2018-05-07 16:09:23

雅致VS明快

老实说,我认为Python中的切片方式是非常违反直觉的,它实际上是在交换所谓的优雅有了更多的大脑处理,这就是为什么你可以看到这篇StackOverflow文章有超过2k的支持率,我认为这是因为有很多人一开始就不理解它。

举个例子,下面的代码已经让很多Python新手头疼了。

代码语言:javascript
运行
复制
x = [1,2,3,4]
print(x[0:1])
# Output is [1]

它不仅很难处理,而且也很难正确解释,例如,上面代码的解释是

取第0个元素,直到第一个元素之前的元素..。

现在看看Ruby,它使用了包含上限。

代码语言:javascript
运行
复制
x = [1,2,3,4]
puts x[0..1]
# Output is [1,2]

坦率地说,我真的认为Ruby的切片方式对大脑更好。

当然,当您根据索引将列表拆分为两部分时,排他上界方法会产生更好看的代码。

代码语言:javascript
运行
复制
# Python
x = [1,2,3,4]
pivot = 2
print(x[:pivot]) # [1,2]
print(x[pivot:]) # [3,4]

现在让我们来看看包罗万象的上界方法

代码语言:javascript
运行
复制
# Ruby
x = [1,2,3,4]
pivot = 2
puts x[0..(pivot-1)] # [1,2]
puts x[pivot..-1] # [3,4]

显然,代码不那么优雅,但这里没有太多的大脑处理。

结论

归根结底,这实际上是优雅与明显的问题,而Python的设计者更喜欢优雅而不是明显。为什么?因为Python的禅宗声明美丽胜过丑陋

..。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11364533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档