【问题标题】:Python. while createing list from func result, it returns me NonePython。从 func 结果创建列表时,它返回我 None
【发布时间】:2019-04-29 09:58:13
【问题描述】:

你好我有以下小功能

import pandas as pd           
lst = []                 

def test(val):               
    lst.append({'value':val})
    return pd.DataFrame(lst) 

value = test('6')         
lst = lst.append(value)                         
print(lst)               

当我运行它时,lst 是无。但是,我希望在每个循环之后都对其进行扩展。

我也尝试过:

a = []           
a.append(value)   

但每次运行后它只返回我在函数中传递的值,它会删除之前传递的值

【问题讨论】:

  • lst = lst.append(value) 你把 append 的返回值赋给了 lst。 append 函数的返回值为 None。我看不出 a.append(value) 有什么问题
  • 但每次运行后它只返回我传递给函数的值,但如果我用其他值运行代码,它不会扩展它
  • 坚持你的第一个sn-p,把lst = lst.append(value) 改成lst.append(value)
  • “每次运行后”你能描述一下你实际在做什么吗? a=[] 不应该在你的循环中,如果它会导致它将变量覆盖为一个空数组。
  • 实际上并没有循环。所示脚本只是将一个值附加到列表中。我想知道,在再次阅读之后,OP 是否真的试图在同一脚本的不同运行之间保留列表。如果是这样,我们需要了解实际用例的更多细节,以找出最好的方法。

标签: python list loops


【解决方案1】:

您的代码几乎是正确的,这是一个固定版本:
(根据您的要求编辑)

import pandas as pd           


def test(val, ls):
    ls.append({'value': val})
    return pd.DataFrame(ls)


lst = []
print(test('6', lst))
print()
print(test('7', lst))
print()
print(test('8', lst))

输出:

  value
0     6

  value
0     6
1     7

  value
0     6
1     7
2     8

【讨论】:

  • 感谢您的回复。但我不想每次都用新值分别调用函数
  • 谢谢,有没有办法在不使用新值单独调用函数的情况下获得这个结果?我们可以调用一次函数,然后将 func 传递的值从 6 更改为 7,然后获取列表 ['6', '7']?
  • @Sascha 嗯,我不太清楚你的意思。尝试用不同的方式解释它可能吗?如果我能理解你的意图,我会很乐意提供帮助:)
  • 我的意思是获得你用不同参数调用函数 3 次的结果。但是有没有办法用'6'调用函数一次,然后只需在同一行中将6更改为7,每次通过更改值也看到它被附加到列表中,如果我想要具有10个值的列表我有调用函数 10 次(10 个单独的行),但是有没有办法调用一次,只需更改值(在一行中)。我希望这次我能解释一下自己:)
  • @Sascha 这将如何工作?首先你会有一行value = '6',然后你会在它上面退格并输入value = '7',然后在它上面退格并输入value = '8'?毕竟运行你的代码? Ofc 是行不通的。
猜你喜欢
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2014-07-03
相关资源
最近更新 更多