相关疑难解决方法(0)

Python Sort()方法

我开始学习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

3
推荐指数
1
解决办法
1901
查看次数

python list comprehension和extend()

以我的方式进入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)

前两个扩展按预期工作,但是当在列表理解中压缩相同时,它会失败.我究竟做错了什么?

python list-comprehension extend

3
推荐指数
1
解决办法
3768
查看次数

列表理解和到位方法

我只是想了解列表理解过程中发生了什么.在列表理解中应用时,一些在"就地"列表上工作的方法似乎不起作用:

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)

我猜这与被复制到不同内存空间的所有元素有关.为什么 …

python list-comprehension list

3
推荐指数
1
解决办法
128
查看次数

在列表的子集上使用list.reverse()."NoneType"对象不可迭代

所以,我试图将一个列表与另一个列表的子集相反.出于某种原因,翻译似乎并不喜欢它.这就是我正在做的事情.

list1.extend(list2[someInt:someOtherInt].reverse())
Run Code Online (Sandbox Code Playgroud)

为什么这不合法?这对我来说似乎很合理..

python list

2
推荐指数
1
解决办法
1822
查看次数

Python列表扩展和变量赋值

我试图扩展一个列表,并对结果返回值为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'的赋值是多余的,但为什么它会破坏操作呢?

python list variable-assignment extend

2
推荐指数
1
解决办法
1334
查看次数

将值附加到空列表的最佳实践

我只是对以下代码片段不起作用感到好奇,该代码片段应初始化一个空列表,并在运行时追加一个初始值。第二个片段正在工作。它出什么问题了?是否有进行此类初始化的最佳实践?

>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
Run Code Online (Sandbox Code Playgroud)

编辑:似乎我对语法有误解。如下面已经指出的,append总是返回None作为结果值。我首先想到的是[]将返回一个空的列表对象,在该对象的附加项中应添加第一个元素,然后将该列表分配给foo。错了

python initialization list

2
推荐指数
1
解决办法
2万
查看次数

列表上的“TypeError:‘NoneType’对象不可迭代”

我想知道是否有人可以帮助我解开这个谜团。当我运行我的程序时,它显示错误。

类型错误:“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)

工作完美

python

2
推荐指数
2
解决办法
5257
查看次数

打印排序列表

为什么要执行以下操作:

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)

python

2
推荐指数
1
解决办法
2万
查看次数

在列表上使用 remove() 后,“TypeError: 'NoneType' 类型的对象没有 len()”

我有这个代码:

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()工作原理,但也许我不明白?

为什么我会收到这个错误?

python list python-3.x

2
推荐指数
1
解决办法
386
查看次数

Python:如何在声明列表的同一行中附加到列表?

有什么办法可以替换以下内容:

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)

python list

2
推荐指数
2
解决办法
3002
查看次数