首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么片(10,50,2).indices(10)返回( 10,10,2)?

为什么片(10,50,2).indices(10)返回( 10,10,2)?
EN

Stack Overflow用户
提问于 2015-04-17 22:05:43
回答 1查看 84关注 0票数 0
代码语言:javascript
运行
复制
#!/usr/bin/python
# 1.11. Naming a Slice
# Problem: Your program has become an unreadable mess of 
# hardcoded slice indices and you want to clean it up.

###### 0123456789012345678901234567890123456789012345678901234567890'
record = '....................100          .......513.25   ..........'  
cost = int(record[20:32]) * float(record[40:48])

print (cost)

# name the slices
SHARES = slice(20,32)
PRICE = slice(40,48)

cost = int(record[SHARES]) * float(record[PRICE])
print (cost)


items = [0, 1, 2, 3, 4, 5, 6]
a = slice(2, 4)

print (items[2:4])
print (items[a])

items[a] = [10,11]
print (items)

del items[a]
print (items)


a = slice(10, 50, 2)
print (a.start, a.stop, a.step)


s = 'HelloWorld'
indice = a.indices(len(s))
print (indice)

for i in range(*a.indices(len(s))):
    print(s[i])

这是第1.11章中的示例。

代码语言:javascript
运行
复制
print (indices)

这应该给我(5,10,2),但它给了我(10,10,2)。然后下面的for-循环没有打印任何内容。

为什么我的代码显示的结果与书中的结果不一样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 22:31:41

这实际上是书中的一个错误。如果您检查errata并向下滚动到第19页,有以下描述:

这个示例"a.indices(len(s))“导致与书中打印的输出不同的输出,假设切片a是切片a,如上面的示例所示。如果一个是片(5,50,2)左右,它将以显示的方式工作。还是我错了? 作者或编辑器的注意:将页面中的示例更改为:A=片(5,50,2) >>> a.start 5 >>> a.stop 50 >>> a.step 2 >>> 从根本上讲,有问题的例子应该会起作用。

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

https://stackoverflow.com/questions/29710195

复制
相关文章

相似问题

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