python - python 条件 (if) 语句是否有最大长度?

标签 python python-2.7 conditional eval conditional-statements

我使用 python (2.7) 的 eval() 函数生成条件语句,如下所示:

my_list = ['2 > 1','3 > 2','4 > 3']

if eval('(' + ') or ('.join(my_list) + ')'):
    print 'yes'
else:
    print 'no'

在我的例子中,列表是由代码生成的,my_list 来自一个参数文件,列表在条件表达式中用“或”语句连接。上面的代码打印"is"。

它适用于小型列表,但在 eval() 语句中有一定数量的字符时,我会收到一个字符串错误。

一些搜索发现这些线程指向一个错误:

但是它们的最大 eval() 大小比我发现的要大得多。就我而言,我发现问题从 1744 到 1803 个字符开始。我试过这段代码,它确实在两个语句之间崩溃了

>>> eval("1.0*"*10000+"1.0")
1.0
>>> eval("1.0*"*100000+"1.0")
# segfault here

所以,这让我回想起它不是 eval(),而是 if 语句中的一些 max。

有条件地应用列表中不涉及长字符串和 eval() 函数的规则的另一种方法是什么?

有趣的是,我把 my_list 变大了:

my_list = ['2 > 1']*1000000

代码运行良好...

最佳答案

也许我遗漏了什么,但看起来:

any(map(eval, my_list))

完全按照您的意愿行事。

from itertools import imap

any(imap(eval, my_list)) # Python 2.

如果第一个元素评估为 True(也称为“短路”),这具有评估列表其余部分的良好效果。这可能是也可能不是您所追求的。

例子:

> any(map(eval, ['2 > 1','3 > 2','4 > 3']))
True

关于python - python 条件 (if) 语句是否有最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700588/

相关文章:

Python 将字符连接到列表

python - 如何使用 Python 将需要提取关键字的 excel (.xls) 文件中的行转换为列?

python-2.7 - pandas:按二级索引范围对 MultiIndex DataFrame 进行切片

c++ - 为什么下面的代码只在 a = 1 时返回 true?

javascript - 为什么使用 ('function' === typeof x) 而不是 (typeof x === 'function' )

python - Groupby() 以逗号分隔的单词

python - Pytorch nn 模块泛化

python - 在 python-wordpress-xmlrpc 请求上设置自定义 header

html - 使用 jsp 有条件地显示 html 元素

python - SciKit Learn - SGDClassifier 准确性不佳