我最近开始用Python进行数据分析,因为我没有从头开始学习Python,我觉得我错过了一些细微差别。
我注意到的一件事是在我的一份报告中,我从CSV导入了一个数据集,将其作为字典放入,操纵它并尝试打印剩余的条目。
我用过:
len(a)
len(b)
len(c)
当我这样做时,只有其中一个号码返回,所以我花了很多时间来调试我的代码。最后,我在网上发现了类似的代码,并尝试复制其语法。有效的改变是:
print len(a)
print len(b)
print len(c)
我正在尝试理解这两个命令之间的区别。最初我认为len只打印了一个计数,但我猜它有什么不同?
len只有一个计数的'记忆'吗?为什么我需要添加打印?
答案 0 :(得分:4)
len(list)不打印任何东西,它只返回。如果您正在使用REPL(读取 - 评估 - 打印 - 循环),那么它将打印返回的值并循环。因此,要打印多个,您必须调用print。
答案 1 :(得分:3)
len
返回一个值,仅在REPL中您将看到返回的值而不将值赋给变量。更具体地说,
LEN(S)
返回对象的长度(项目数)。争论可能 是一个序列(如字符串,字节,元组,列表或范围)或a 集合(例如字典,集合或冻结集)。
答案 2 :(得分:0)
当不清楚时,您需要打印或写入,需要回显产生某些值的所有内容(例如在我们称之为REPL Read Eval Print Loop的交互式会话中)。
所以:
v = len([1, 42])
将值2放在v。
中所以在执行的脚本中有以下3行:
v = len([1, 42])
len([1, 42])
print v
只会打印一行(即显示值为2的最后一行。
答案 3 :(得分:0)
以这种方式看待它。
n = len(a)
将n
设置为返回值。
n = print(len(a))
将None
分配给n
,因为print()
返回的是print()
。在函数式编程术语中,将值打印到控制台是一个副作用,即使这通常是您在任何事情上调用print
的原因。
(在传统的Python 2中,这是一个语法错误,因为len(a)
是一个关键字。)
在Python提示符下,print()
的值也由Python解释器打印,但这是因为Python解释器会自动执行此操作,以方便您使用。
在常规Python程序中,基本上只有write()
和len
等产生输出,大多数操作(+
,open
,let mirrored_object = Mirror(reflecting: Constants.const.self)
等等)只返回一些东西,而不打印它。 (想想如果一个程序打印出所计算的所有内容,程序会有多么嘈杂。)