有一种说法吗?

时间:2011-12-04 20:29:19

标签: python conditional

非常简单,可能对某人而言。有没有办法在一行代码中说出来?

if word.startswith('^') or word.startswith('@'):
    truth = True
else: 
    truth = False

4 个答案:

答案 0 :(得分:10)

我认为这将是最短的一个:

truth = word.startswith(('^','@'))

从文档(查看最后一行):

startswith(...)
    S.startswith(prefix[, start[, end]]) -> bool

    Return True if S starts with the specified prefix, False otherwise.
    With optional start, test S beginning at that position.
    With optional end, stop comparing S at that position.
    prefix can also be a tuple of strings to try.

答案 1 :(得分:8)

布尔表达式(word.startswith('^') or word.startswith('@'))返回一个布尔值,然后可以将其赋值给变量,所以:

truth = (word.startswith('^') or word.startswith('@'))

完全有效。

答案 2 :(得分:3)

尝试:

truth = word.startswith('^') or word.startswith('@')

答案 3 :(得分:1)

truth = word and word[0] in '^@'

这将非常快速地完成工作(不涉及方法调用)但仅限于一个字节的前缀,如果truth为{{word,则会将word设置为''的值1}},None0等等。它会/应该在代码审查中被抛弃,而不是最小的严格。