我想附上一个列表给自己,我认为这样可行:
x = [1,2]
y = x.extend(x)
print y
Run Code Online (Sandbox Code Playgroud)
我想回来,[1,2,1,2]但我得到的只是内置None.我究竟做错了什么?我正在使用Python v2.6
我想创建一个简单的二叉树,如下图所示:

基本上是空的,但最后的值所以我创建了根列表:
root = [list(),list()]
Run Code Online (Sandbox Code Playgroud)
并制作了一个递归函数来填充所有内容:
def TF(nodeT,nodeF , i):
if i == 35 : return 'done'
TF(nodeT.append([]),nodeT.append([]) , i = i + 1) #append T , F in the true node
TF(nodeF.append([]),nodeT.append([]) , i = i + 1) #append T , F in the false node
Run Code Online (Sandbox Code Playgroud)
我的问题是简单的list.append(something)在python中返回"None"所以只要再次调用该函数(TF(None,None,1))None.append不存在.
我该如何解决这个问题?提前致谢.
如果你对如何提高效率或以其他方式提出任何建议(从来没有测试我的代码,所以我不知道它将如何做)
(我的最终目标是拥有一个真假地图和一个参数:"FTFTFFFTFTF"会显示字母"M"等...)
我尝试使用python计算postfix expresion,但它无法工作.我想这可能是一个与python相关的问题,有什么建议吗?
expression = [12, 23, 3, '*', '+', 4, '-', 86, 2, '/', '+']
def add(a,b):
return a + b
def multi(a,b):
return a* b
def sub(a,b):
return a - b
def div(a,b):
return a/ b
def calc(opt,x,y):
calculation = {'+':lambda:add(x,y),
'*':lambda:multi(x,y),
'-':lambda:sub(x,y),
'/':lambda:div(x,y)}
return calculation[opt]()
def eval_postfix(expression):
a_list = []
for one in expression:
if type(one)==int:
a_list.append(one)
else:
y=a_list.pop()
x= a_list.pop()
r = calc(one,x,y)
a_list = a_list.append(r)
return content
print eval_postfix(expression)
Run Code Online (Sandbox Code Playgroud)
希望有人可以帮帮我!任何建议都会被批准
这是出于好奇而不是试图将其用于实际目的的问题。
考虑一下我有以下简单示例,其中我通过列表理解生成列表:
>>> a = [1, 2, 3]
>>> b = [2 * i for i in a]
>>> b
[2, 4, 6]
>>> b.append(a)
>>> b
[2, 4, 6, [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试一次完成所有操作
>>> a = [1, 2, 3]
>>> b = [2 * i for i in a].append(a)
>>> b == None
True
Run Code Online (Sandbox Code Playgroud)
结果返回None。有什么理由吗?
我以为这样的动作会返回第一个示例中的答案,或者抛出错误。
供参考,我使用的是Python 3.6.5
y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)
x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?
Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。
假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y:
y = x + 1
# Or it could be in a function:
def calc_y(an_x):
return an_x + 1
Run Code Online (Sandbox Code Playgroud)
现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:
xs = [1, 3, 5]
for x in xs:
y = x + 1
Run Code Online (Sandbox Code Playgroud)
while或者,如果有其他逻辑来计算值序列,我可以使用循环x:
def next_collatz(value):
if value % 2 == 0:
return value // 2
else:
return 3 * value + 1
def collatz_from_19():
x = 19
while x != 1:
x …Run Code Online (Sandbox Code Playgroud) 考虑到内置的Python List方法,我遇到了一个问题.
当我学习Python时,我一直认为Python mutators,就像任何值类mutator应该做的那样,返回它创建的新变量.
举个例子:
a = range(5)
# will give [0, 1, 2, 3, 4]
b = a.remove(1)
# as I learned it, b should now be [0, 2, 3, 4]
# what actually happens:
# a = [0, 2, 3, 4]
# b = None
Run Code Online (Sandbox Code Playgroud)
这个列表mutator没有返回新列表的主要问题是你不能随后发生多个突变.假设我想要一个范围从0到5的列表,没有2和3. Mutators返回新变量应该能够这样做:
a = range(5).remove(2).remove(3)
Run Code Online (Sandbox Code Playgroud)
可悲的是,这是不可能的range(5).remove(2) = None.
现在,有没有办法在列表上实际进行多次突变,就像我想在我的例子中做的那样?我认为即使是PHP也允许使用Strings进行这些类型的后续突变.
我也找不到所有内置Python函数的好参考.如果有人能找到所有列表mutator方法的实际定义(带有返回值),请告诉我.我能找到的就是这个页面:http://docs.python.org/tutorial/datastructures.html
我想在列表中添加一个字符串:
list1 = ['hi','how','are','you','googl']
ok = 'item22'
list1 = list1.extend(ok)
Run Code Online (Sandbox Code Playgroud)
但它打印出来None.这是为什么?
我使用两种不同的方法来创建反向列表.
第一种方式:
>>> a=list(range(3))
>>> a.reverse()
>>> print(a)
[2,1,0]
Run Code Online (Sandbox Code Playgroud)
第二种方式:
>>> a=list(range(3)).reverse()
>>> print(a)
None
Run Code Online (Sandbox Code Playgroud)
为什么第二种方法不起作用?感谢您的帮助.
我开始学习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?这对我来说没有意义.
谢谢.