为什么
range(0,10).remove(1)
Run Code Online (Sandbox Code Playgroud)
不起作用?
我知道问题很简短,但我不知道为什么这个东西不起作用.是否可以将它写成一行?
x = range(0, 10)将返回列表或range对象(取决于您的Python版本).
x = range(0, 10).remove(1)将返回,None因为list.remove将就地修改列表,因此返回None.您的列表已创建并且值1已删除,但由于它从未分配给任何内容,因此会收集垃圾.
x = range(0, 10).remove(1)将返回AttributeError作为range对象没有一个remove方法.如果您使用它将其转换为列表list(range(0, 10)).remove(1),则会遇到与Python 2相同的问题.
获得你想要的东西的方法是使用a 列表理解.在列表推导中,您将迭代range(0, 10)但使用if语句仅添加不为1的值,例如:
x = [i for i in range(0, 10) if i != 1]
# [0, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |