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'