关于Python中list()方法的疑问

已知list()方法是将元组转换为列表。
然后运行如下命令:

a=("hello")
list(a)

得到的是列表

['h', 'e', 'l', 'l', 'o']

自己参考了一下网上的说明,弄明白了前面的a=("hello")并非是元组而是字符串,那么就可以理解为list()方法可以给字符串用,然后拆字变成列表?

请问为什么list()方法可以用在字符串上?


然后我进行了如下尝试:

>>>a=("胸无大志")
>>>a
>>>'胸无大志'
>>>a=list(a).reverse()
>>>a
>>>  #这里什么都没有了,print输出为None

莫名其妙……
然后这样才能输出自己想要的结果(['志', '大', '无', '胸'])

>>>a=("胸无大志")
>>>a
>>>'胸无大志'
>>>a=list(a)
>>>a.reverse()
>>>a
>>>['志', '大', '无', '胸']

请问这是什么原因?
谢谢!

阅读 3.1k
3 个回答

list()构造函数通过可以传递iterable对象. 而string就是 iterable.
参考 Lists

class list([iterable])

至于reverse()对列表操作, 本身返回值是 none. 因为 listmutable 对象(可变对象), 对可变对象进行操作, Python 中大多数会对其本身进行操作, 返回值为 none.

其实楼主犯了一个低级错误, 中间那段代码, 为什么是空的, 因为reverse是没有返回值的, 它是直接作用于原对象, 而python对于没有返回值的函数, 默认返回None, 这也就解释了, 为什么你的a没有, 用print输出为None

a = ('hello',),这才是元组,然后只要是可迭代的对象,list就可以转换,迭代字符串的时候,就是一个一个字符迭代的,所以就变成h、e这种样式了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题