相关疑难解决方法(0)

在Python中将列表附加到自身

我想附上一个列表给自己,我认为这样可行:

x = [1,2]
y = x.extend(x)
print y
Run Code Online (Sandbox Code Playgroud)

我想回来,[1,2,1,2]但我得到的只是内置None.我究竟做错了什么?我正在使用Python v2.6

python list append

6
推荐指数
1
解决办法
6654
查看次数

Python列表追加返回值

我想创建一个简单的二叉树,如下图所示:

http://imgur.com/QCVSW.png

基本上是空的,但最后的值所以我创建了根列表:

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 list

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

为什么list.append返回None?

我尝试使用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)

希望有人可以帮帮我!任何建议都会被批准

python

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

在Python中附加到列表理解将返回None

这是出于好奇而不是试图将其用于实际目的的问题。

考虑一下我有以下简单示例,其中我通过列表理解生成列表:

>>> 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

python list-comprehension python-3.x

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

简单的 Python 问题:为什么我不能将变量分配给排序列表(就地)?

y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)

x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?

python

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

如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

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 iteration list-comprehension

5
推荐指数
1
解决办法
2855
查看次数

Python LIST函数不返回新列表

考虑到内置的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

python list

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

扩展列表返回无

我想在列表中添加一个字符串:

list1 = ['hi','how','are','you','googl']
ok = 'item22'
list1 = list1.extend(ok)
Run Code Online (Sandbox Code Playgroud)

但它打印出来None.这是为什么?

python list python-3.x

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

在Python中使用reverse()

我使用两种不同的方法来创建反向列表.
第一种方式:

>>> 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 python-3.x

4
推荐指数
1
解决办法
82
查看次数

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 ×10

list ×4

python-3.x ×3

list-comprehension ×2

append ×1

iteration ×1