python转换设置列出奇怪的列表行为

Ryd*_*oks 2 python

我一定错过了什么,因为这很奇怪......

a = ['a', 'b', 'c']
a1 = ['b', 'a']
foo = list( set(a) - set(a1))
Run Code Online (Sandbox Code Playgroud)

**返回**

foo == ['c']
type(foo) == <type 'list'>
foo[0] == 'c'
Run Code Online (Sandbox Code Playgroud)

**现在奇怪的部分**

foo = foo.insert(0, 'z')
foo == None
Run Code Online (Sandbox Code Playgroud)

为什么列表操作如insert,并追加导致foo为None?

以下内容完成了我的顶级示例尝试但看起来很荒谬.

import itertools

a = ['a', 'b', 'c']
a1 = ['b', 'a']

foo = list(set(a) - set(a1))
q = [['z']]
q.append(foo)
q = [i for i in itertools.chain.from_iterable(q)]
q == ['z', 'c']
Run Code Online (Sandbox Code Playgroud)

任何见解将不胜感激.谢谢.

NPE*_*NPE 10

foo.insert() 返回 None,但确实改变foo了你期望的方式:

>>> foo = ['c']
>>> foo.insert(0, 'z')
>>> foo
['z', 'c']
Run Code Online (Sandbox Code Playgroud)

如果您希望将结果分配给不同的变量,可以采用以下方法:

>>> foo = ['c']
>>> bar = ['z'] + foo
>>> bar
['z', 'c']
Run Code Online (Sandbox Code Playgroud)