如何使用Python3中的match/case为特定的列表索引位置构建案例?[已关闭]

qgelzfjb  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(137)

14小时前关门了。
Improve this question
我有一个布尔值列表,比如[True, False, False, False, True, ...]
列表总是有一个预设的长度,我如何使用match/case语法来检查每个元素的值?
我能用这个吗?

# The returned result is a list of True or False -> [True, True, False, True, False] etc.
match list_items:
    case list_items[0] == 'True'
    case list_items[1] == 'False'
56lgkhnf

56lgkhnf1#

这个问题有些开放的解释,但这是我认为OP正在寻找的:

data = [True, False, False, False, True]

for index, element in enumerate(data):
    match element:
        case True:
            print(f'True at index {index}')
        case False:
            print(f'False at index {index}')
        case _:
            print(f'Unexpected value at index {index}')
    • 输出:**
True at index 0
False at index 1
False at index 2
False at index 3
True at index 4
w46czmvw

w46czmvw2#

你只需要把match语句 Package 在一个循环中,那么它就会像预期的那样工作。如果你不这样做,它将评估整个list对象,并且一个list不能是TrueFalse。你可以把它想象成(list == True)。这个语句总是评估为false,如果你在ifmatch语句中使用它,它就不会工作。
这是你需要做的:

list = [True, False, False, False, True]

for element in list:
    match element:
            case True: print(1)
            case False: print(0)

在这个例子中,如果索引值为True,我就简单地输出1,如果为False,输出0,最终输出为1 0 0 0 1

相关问题