.index() 在基本 python 编程中的使用

.index() use in basic python programing

我正在学习 Kaggle 上的基础 python 编程,这是一个我不明白答案的问题。

问题

我们正在使用列表来记录参加我们聚会的人以及他们到达的顺序 party_attendees = ['Adela', 'Fleda', 'Owen', 'May', 'Mona', 'Gilbert', 'Ford'] 如果客人到达至少一半的派对客人之后,则被视为 'fashionably late'。但是,他们一定不是最后一位客人

回答

def fashionably_late(arrivals, name):
    order = arrivals.index(name)
    return order >= len(arrivals) / 2 and order != len(arrivals) - 1

你能解释一下答案吗

请每次都用一个例子来理解任何函数的工作原理。

这里举个例子,

与会者 = ['Adela'、'Fleda'、'Owen'、'May'、'Mona'、'Gilbert'、'Ford'] 姓名 = 莫娜

我们检查莫娜是否时尚迟到

fashionably_late(arrivals,name) --> 当调用函数时,我们将 name 作为 Mona 传递,而 arrivals 是与会者列表

order = arrivals.index(name) --> return 这里 Mona 的索引是 '4'

return order >= len(arrivals) / 2 and order != len(arrivals) - 1

Order >= len(arrivals) / 2 --> len() returns 列表的长度和 /2 除以 2,因为时髦的迟到是谁在一半的与会者之后来 7/2 所以它 return 是真的,因为 mona 的指数大于 7/2

order != len(arrivals) - 1 --> 这个条件检查 Mona 是最后一位客人还是不在这里 return true 因为 Mona 不是最后一位客人

and --> 'true and true' return true 所以最终函数 returns true 意味着 Mona 时尚迟到。

    party = ['Adela', 'Fleda', 'Owen', 'May', 'Mona', 'Gilbert', 'Ford']
    name = 'Mona'
    index = party.index(name)
    def f(x):
        if index >= len(party)/2 and index != len(party)-1:
            return True
        else:
            return False
    f(x)

Mona 在列表中的索引为 4。 [0,1,2...]

列表的长度是 7。

索引 4 >= 7/2 并且 4 不是列表中的最后一个(索引 6 是最后一个 7-1)

因此莫娜 return 是正确的。 只有名字 Mona 和 Gilbert 会 return 为 True。

return ((arrivals.index(name)+1)>round(len(arrivals)/2) and arrivals[-1] != name)