gpt4 book ai didi

Python - 在 Lambda 中使用打印/调试语句

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:56 25 4
gpt4 key购买 nike

我在 Python3 中有一个 filter,我正在使用 lambda 函数应用它。这是我的功能:

affy_reader = csv.DictReader(filter(lambda row:
not row[0].startswith('#') and
str(row[0]).isdigit(),
file_pointer),
delimiter='\t',
fieldnames=affy_column_headers)

有没有办法从这个 lambda 函数中打印 row 的值?我认为我需要这样做,因为 row 仅在 lambda 范围内。例如,如果这是一个 LISP Lambda 程序,我相信我可以这样做:

affy_reader = csv.DictReader(filter(lambda row: print(row) 
not row[0].startswith('#') and
str(row[0]).isdigit(),
file_pointer),
delimiter='\t',
fieldnames=affy_column_headers)

因为 print() 是在线读取和执行的。 Python 中有什么方法可以做到这一点吗?或者,如果没有,我查看此值的好方法是什么?谢谢!

*我意识到我的“LISP”示例是 Python 而不是 LISP。我只是想进一步说明我正在尝试做什么。

最佳答案

我不认为你可以用 lambda 来做到这一点。只需定义一个辅助函数。这样你还可以显示某一行是否被过滤:

def filter_plus_print(row):
result = not row[0].startswith('#') and str(row[0]).isdigit()
print("Keeping:" if result else "Removing:", row)
return result

然后做

affy_reader = csv.DictReader(filter(filter_plus_print, file_pointer), 
delimiter='\t',
fieldnames=affy_column_headers)

关于Python - 在 Lambda 中使用打印/调试语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com