Python: 判断任意元素是否在任意列表中返回布尔值

2024-09-29 01:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

Noob想知道如何改进他的代码。在

a, b, c = string.split(enteredDate, "/")

m31s = [1, 3, 5, 7, 8, 10, 12]
m30s = [4, 6, 9, 11]

for x in range(len(m31s)):
    x = int(m31s[x])
    if x != int(a) and b != 31:
         print "Invalid date."
for x in range(len(m30s)):
    et cetera...

如果不清楚,我正在测试输入的日期,看看它是否有效。这只是计划的一部分。主要问题是:测试元素是否与列表中的任何元素匹配的最佳方法是什么?在

我的方法有效。。。但是,我想还有更好的办法。我在标题中说布尔是因为我设想的是:

^{pr2}$

可能是个空想。只是好奇而已。在

感谢那些花时间帮忙的人。在


Tags: 方法代码in元素forstringlenif
3条回答

您应该使用python^{}库。在

try:
    datetime.datetime.strptime(enteredDate, "%m/%d/%Y")
except:
    print 'Invalid date'

您可以使用语法if elem in list。例如:

>>> if 1 in [1,2,3,4,5]:
...     print 'found 1'
... 
found 1

我建议:

  • 更换

       a, b, c = string.split(enteredDate, "/")
    

    ^{pr2}$

    这并不重要,但是第一个版本需要导入string模块,第二个版本则不需要。

  • int(m31s[x])替换为m31s[x](你知道那些已经是{},那么为什么要多加{}?在
  • 如果secretCode( ... )返回true或false,则只需编写if secretCode( ... ):,无需与== True进行比较。在
  • 不用调用int(a)int(b)int(c),你只需编写a, b, c = map(int, enteredDate.split("\"))并在以后忘记这些{},因为你知道它们是int。此外,如果那些是而不是int,你将立即得到一个异常,而不会在代码中进行不必要的进展。在

相关问题 更多 >