Python 迭代列表以查看是否存在特定值

Python 迭代列表以查看是否存在特定值,python,list,loops,Python,List,Loops,我有一个需要检查特定值的数组。如果该值存在于列表中,我需要能够将其返回到列表之外的变量。在本例中,我希望查看列表中是否有任何值是“预订”的。如果列表中的所有值均为“可用”,则可用性应为“可用”,但如果一个或多个值为“已预订”,则可用性需要为“已预订” array = ['booked','available','available'] availability = 'available' for id in array: temp_avail = id if temp_ava

我有一个需要检查特定值的数组。如果该值存在于列表中,我需要能够将其返回到列表之外的变量。在本例中,我希望查看列表中是否有任何值是“预订”的。如果列表中的所有值均为“可用”,则可用性应为“可用”,但如果一个或多个值为“已预订”,则可用性需要为“已预订”

array = ['booked','available','available']

availability = 'available'

for id in array:
    temp_avail = id
    if temp_avail == 'available':
        global availability
        availability = 'available'
    elif temp_avail == 'booked' or availability == 'booked':
        global availability
        availability = 'booked'
    else:
        global availability
        availability = 'error'

print(availability)

这里不需要
global
;你在模块级工作

您只需使用内置的:


all
检查列表中的所有项目是否可用,而三元值根据
all
表达式的真实性返回赋值值。

此处不需要
全局
;你在模块级工作

您只需使用内置的:


all
检查列表中的所有项目是否可用,而三元函数根据
all
表达式的真实性返回赋值值。

不要使用全局变量,而是返回值。实际上,在这种情况下,您的
global
语句是完全无用的,因为
availability
已经在最外层的范围内。让我这样说,在我的3年或Python编程生涯中,我从来没有使用过
global
,更不用说在生产代码中,除了在StackOverflow上,来解释如何使用它,并始终立即建议不要使用它。不要使用全局变量,而是返回一个值。实际上,在这种情况下,您的
global
语句是完全无用的,因为
availability
已经在最外层的范围内。让我这样说,在我的3年或Python编程生涯中,我从来没有使用过
global
,更不用说在生产代码中,除了在StackOverflow上,来解释如何使用它,然后立即建议不要使用它。或者
any(i=='booked'代表数组中的i)
@karakfa都会短路,所以
all
any
在这里都是安全的。@moses koledoye有一条皱纹我没有提到,因为我没想到会有一条像你这样的皱纹。该列表实际上由我需要检查外部源以查找值的值组成(我正在使用Zapier)。所以temp\u avail=id实际上应该读取temp\u avail=store.get(id)。所以你的答案是正确的,但我想知道你能否解释一下我是如何做到这一点的?@csakon我不是在追求一句台词,我是在追求一种富有表现力的东西。如果你阅读了内置的
所有的
和三元运算符,你会发现我提供的答案非常基本:)@Moses Koledoye,是的。出于某种原因,我认为
all
不会短路。但是没有理由不让它们对称。或者
any(i=='booked'表示数组中的i)
@karakfa都会短路,所以
all
any
在这里都是安全的。@moses koledoye有一条皱纹我没有提到,因为我没想到会有像你这样的一条皱纹。该列表实际上由我需要检查外部源以查找值的值组成(我正在使用Zapier)。所以temp\u avail=id实际上应该读取temp\u avail=store.get(id)。所以你的答案是正确的,但我想知道你能否解释一下我是如何做到这一点的?@csakon我不是在追求一句台词,我是在追求一种富有表现力的东西。如果你阅读了内置的
所有的
和三元运算符,你会发现我提供的答案非常基本:)@Moses Koledoye,是的。出于某种原因,我认为
all
不会短路。但没有理由不让它们对称。
availability = 'available' if all(i=='available' for i in array) else 'booked'