鱼C论坛

 找回密码
 立即注册
查看: 2502|回复: 12

list的问题

[复制链接]
发表于 2014-8-12 00:24:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def huiwen(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list(list2):
        return 'huiwen!!!'
    else:
        return 'not huiwen...'


为啥要是list==list(list2)
而不是list==list2

谁能解释一下,谢谢~~


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 00:26:48 From FishC Mobile | 显示全部楼层
reversed函数返回的不是一个list对象,而是返回一个可迭代对象。这里用工厂函数list讲reversed返回的可迭代对象转化成list对象再与原本的list1比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 00:30:13 From FishC Mobile | 显示全部楼层
reversed函数返回的不是一个列表,而是返回一个迭代器。这里用工厂函数list将reversed返回的迭代器转化成list对象再与原本的list1比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 09:05:39 | 显示全部楼层
如楼上所言,配上代码可能更好理解:
  1. >>> list1 = list("test")
  2. >>> list1
  3. ['t', 'e', 's', 't']
  4. >>> list2 = reversed(list1)
  5. >>> list2
  6. <list_reverseiterator object at 0x01339510>
  7. >>> list3 = list(list2)
  8. >>> list3
  9. ['t', 's', 'e', 't']
  10. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 12:12:21 | 显示全部楼层
bevin 发表于 2014-8-12 00:30
reversed函数返回的不是一个列表,而是返回一个迭代器。这里用工厂函数list将reversed返回的迭代器转化成li ...

谢谢,明白了

能不能再请您解释一下“工厂函数”是什么意思,我百度了一下,没有特别明白,谢谢~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-12 12:13:27 | 显示全部楼层
昨、夜星辰 发表于 2014-8-12 09:05
如楼上所言,配上代码可能更好理解:

谢谢~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 12:19:54 | 显示全部楼层
wangerwanger 发表于 2014-8-12 12:12
谢谢,明白了

能不能再请您解释一下“工厂函数”是什么意思,我百度了一下,没有特别明白,谢谢~~~

可以理解为生产某种特定数据类型的“工厂”,如list int tuple等等,都是将其他类型转换为各自的类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 12:50:29 | 显示全部楼层
wangerwanger 发表于 2014-8-12 12:12
谢谢,明白了

能不能再请您解释一下“工厂函数”是什么意思,我百度了一下,没有特别明白,谢谢~~~

比如 int() float() str() 把数据转换成需要的类型的函数就叫工厂函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 14:23:43 | 显示全部楼层
我也學習了...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 17:28:50 | 显示全部楼层
bevin 发表于 2014-8-12 00:26
reversed函数返回的不是一个list对象,而是返回一个可迭代对象。这里用工厂函数list讲reversed返回的可迭代 ...

学习了!
但是为什么python不将reverse()函数设定为当传入参数为list对象的时候,返回值也是一个list对象呢,这样不是更加简便吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 17:33:51 | 显示全部楼层
bevin 发表于 2014-8-12 00:26
reversed函数返回的不是一个list对象,而是返回一个可迭代对象。这里用工厂函数list讲reversed返回的可迭代 ...

学习了!
但是为什么python不将reverse()函数设定为当传入参数为list对象的时候,返回值也是一个list对象呢,这样不是更加简便吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 18:05:05 From FishC Mobile | 显示全部楼层
miles0918 发表于 2014-8-12 17:33
学习了!
但是为什么python不将reverse()函数设定为当传入参数为list对象的时候,返回值也是一个list ...

reversed函数接受的是一个可迭代对象,返回一个迭代器 如果像你那样的话就得增加很多不必要的代码,不符合python的风格,而且有工厂函数可以调用,没必要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-13 11:56:51 | 显示全部楼层
长知识了呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表