我开始学习Python了.
有人能解释为什么sort()返回None吗?
alist.sort() ## correct
alist = blist.sort() ## NO incorrect, sort() returns None
Run Code Online (Sandbox Code Playgroud)
为什么不呢
alist = blist.sort()
Run Code Online (Sandbox Code Playgroud)
返回已排序的列表并将其返回给alist?这对我来说没有意义.
谢谢.
以我的方式进入Python(2.7.1)但是没有理解(几个小时)这个:
>>> a = [1, 2]
>>> b = [3, 4]
>>>
>>> a.extend([b[0]])
>>> a
[1, 2, 3]
>>>
>>> a.extend([b[1]])
>>> a
[1, 2, 3, 4]
>>>
>>> m = [a.extend([b[i]]) for i in range(len(b))] # list of lists
>>> m
[None, None]
Run Code Online (Sandbox Code Playgroud)
前两个扩展按预期工作,但是当在列表理解中压缩相同时,它会失败.我究竟做错了什么?
我只是想了解列表理解过程中发生了什么.在列表理解中应用时,一些在"就地"列表上工作的方法似乎不起作用:
a = [[1, 2, 3], [4, 5, 6]]
i1 = id(a[0])
for i in a: i.reverse()
>>> [[3, 2, 1], [6, 5, 4] # Works
print i1 == id(a[0]) # True, same memory address
a = [i.reverse() for i in a]
>>> [None, None] # Doesn't work
print i1 == id(a[0]) # False, new memory address
a = [i[::-1] for i in a]
>>> [[3, 2, 1], [6, 5, 4]] # Works!
print i1 == id(a[0]) # False
Run Code Online (Sandbox Code Playgroud)
我猜这与被复制到不同内存空间的所有元素有关.为什么 …
所以,我试图将一个列表与另一个列表的子集相反.出于某种原因,翻译似乎并不喜欢它.这就是我正在做的事情.
list1.extend(list2[someInt:someOtherInt].reverse())
Run Code Online (Sandbox Code Playgroud)
为什么这不合法?这对我来说似乎很合理..
我试图扩展一个列表,并对结果返回值为None感到困惑.我试过的是这个:
>>> a = [1,2]
>>> b = [3,4]
>>> a = a.extend(b)
>>> print a
None
Run Code Online (Sandbox Code Playgroud)
我终于意识到问题是最后对'a'的冗余分配.这样可行:
>>> a = [1,2]
>>> b = [3,4]
>>> a.extend(b)
>>> print a
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么第一个版本不起作用.对'a'的赋值是多余的,但为什么它会破坏操作呢?
我只是对以下代码片段不起作用感到好奇,该代码片段应初始化一个空列表,并在运行时追加一个初始值。第二个片段正在工作。它出什么问题了?是否有进行此类初始化的最佳实践?
>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
Run Code Online (Sandbox Code Playgroud)
编辑:似乎我对语法有误解。如下面已经指出的,append总是返回None作为结果值。我首先想到的是[]将返回一个空的列表对象,在该对象的附加项中应添加第一个元素,然后将该列表分配给foo。错了
我想知道是否有人可以帮助我解开这个谜团。当我运行我的程序时,它显示错误。
类型错误:“NoneType”对象不可迭代
我已经测试过我尝试迭代的变量是一个列表,但它仍然说它无效并显示相同的错误。
我的代码意味着打印一个对称的星号三角形:
def iterat(num):
for x in num:
yield x
number=int(input("Enter Positive Number: "))
stars = list(range(number))
print(type(stars))
spaces = stars.reverse()
yeildStar = iterat(stars)
yeildSpace = iterat(spaces)
for star,space in zip(yeildStar,yeildSpace):
print(" "*(space)+"*"*((star*2)-1))
Run Code Online (Sandbox Code Playgroud)
非常感谢。抱歉变量名不好
编辑; 感谢您的帮助。
spaces = reversed(stars)
Run Code Online (Sandbox Code Playgroud)
工作完美
为什么要执行以下操作:
print([7,1,0].sort())
Run Code Online (Sandbox Code Playgroud)
产生:
None
Run Code Online (Sandbox Code Playgroud)
执行以下命令时:
a = [7,1,0]
a.sort()
print(a)
Run Code Online (Sandbox Code Playgroud)
产生:
[0, 1, 7]
Run Code Online (Sandbox Code Playgroud)
?
我有这个代码:
list_of_directions = ['right', 'left', 'up', 'down']
new_list = list_of_directions.remove('right')
print(len(new_list))
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息
类型错误:“NoneType”类型的对象没有 len()
我以为我了解.remove()工作原理,但也许我不明白?
为什么我会收到这个错误?
有什么办法可以替换以下内容:
names = ['john', 'mike', 'james']
names.append('dan')
print(names)
Run Code Online (Sandbox Code Playgroud)
使用与此类似的单行(将打印None)?:
names = ['john', 'mike', 'james'].append('dan')
print(names)
Run Code Online (Sandbox Code Playgroud)