Python:关于3.0版本后的一些问题

    这是我在博客园上写的第一篇博客,刚好最近看了看Python,顺便写点东西啦。要说的是《Python核心编程》(中文 第二版)上的一个例子。

    环境搭建:我也是刚刚建好的,Eclipse+Pydev,搭建方法是百度出来的,网址忘记了。Python是3.3版的。

    要说的例子是书上105页 6.1 “6.切片索引的更多内容”上的一个例子。书上给出的解决代码是:

s = 'abcde'
for i in [None]+range(-1,-len(s),-1):
    print(s[:i])

   问题是这段代码在Python3.3上运行会报错:

Traceback (most recent call last):
File "D:\MyWeb\Python\src\LearningSequence.py", line 17, in <module>
for i in [None]+range(-1,-len(s),-1):
TypeError: can only concatenate list (not "range") to list

    大意是只能将list和list串联,而不能让range和list串联。

    其实,在Python现行版本中,已将range()函数返回值单独处理了。可以用一下代码测试:

print(range(1,100))

    输出的将是range(1, 100),而不是[0,1,2,...99]。这应该是Python在存储机制上的进步。

    如何改正这段代码呢?解决方案有很多。

    笔者的解决是:将range转化为list后和[None]串联,代码如下:

for i in [None]+[x for x in range(-1,-len(s),-1)]:
    print(s[:i])

    也有其他的方法,例如:

for i in range(len(s),0,-1):
    print(s[:i])
for i in [len(s)]+[x for x in range(-1,-len(s),-1)]:
    print(s[:i])

    Python的基本思想是简单而慢一点,和C++和Java都是不一样的。笔者也是有兴趣,初学,可能也有说的不对的地方,欢迎批评指正,共同进步~

转载于:https://www.cnblogs.com/IT-BOY/archive/2013/01/25/2876800.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值