python - 中间打印的不同结果
问题描述
我有这个功能
def getDigits (num) :
check = checkNum(num)
#print('num: '+str(num))
if check is False :
strNum = str(num)
numList = map(toInt, strNum)
#print(list(numList))
squareList = map(getSquareOfDigits, numList)
#print(list(squareList))
sumOfSquares = sum(squareList)
print('sumSqr: '+str(sumOfSquares))
getDigits(sumOfSquares)
else :
return check
它的结果是:
和平方:4
和平方:16
和平方:37
和平方:58
和平方:89
和平方:9
和平方:81
和平方:65
和平方:61
和平方:37
和平方:58
和平方:89
但是如果我取消注释所有打印,结果是:
[2]
[]
sumSqr: 0
[3]
[]
sumSqr: 0
好的,我知道该list
方法会更改结果,但我想知道有一种方法可以在不更改结果的情况下打印对象变量,并且不使用中间变量。
更新
完整的例子在这里
解决方案
关键是生成numList = map(toInt, strNum)
了numList
一个迭代器。在它被迭代一次之后,它已经耗尽并且将不再包含任何值。该行print(list(numList))
通过迭代它、创建一个列表、打印该列表的字符串表示然后丢弃所有内容来完全做到这一点。如果打印行被注释,则返回的迭代器map
将生成值;与print
原地,numList
实际上是空的。
为防止这种情况,请使用numList = list(map(toInt, strNum))
; 这样,您就有了一个可以重复使用的持久列表对象。
推荐阅读
- nginx - nginx反向代理上游过早关闭连接,同时从上游读取响应头
- xslt - XSLT 按同一级别的 2 个标签排序
- android - 如何实现改变 viewHolder 内容的滑动效果
- javascript - 导航时页面未重新加载(“/”)(svelte-routing)
- python - Tkinter - 如何使用模块传递变量?
- spring-boot - 使用 Spring Boot 重新打包/嵌套 JAR 时未加载休眠驱动程序
- python - 图像的准确颜色量化以最小化调色板
- php - 例外:函数 yaml_parse() 不存在
- reactjs - 如果没有模式匹配,如何跳过笑话覆盖阈值
- pytorch - pytorch model.train() 会影响冻结层吗?