gpt4 book ai didi

python - 以 Pythonic 的方式获取列表的尾部?

转载 作者:太空狗 更新时间:2023-10-29 22:14:15 26 4
gpt4 key购买 nike

from random import randrange
data = [(randrange(8), randrange(8)) for x in range(8)]

而且我们必须测试第一项是否等于尾部中的一个。我很好奇,我们如何在不将尾部项目复制到新列表的情况下以最简单的方式做到这一点?请考虑到这段代码在 update() 方法中执行了很多次,因此它必须尽可能快。

使用额外的列表(我猜是不必要的内存浪费):

head = data[0]
result = head in data[1:]

好的,这是另一种方式(太冗长):

i = 1
while i < len(data):
result = head == data[i]
if result:
break
i+=1

解决这个问题的最 Pythonic 方法是什么?谢谢。

最佳答案

Nick D 的回答更好

使用islice。它不会复制列表,而是将您的第二个(优雅但冗长的)解决方案嵌入到 C 模块中。

import itertools

head = data[0]
result = head in itertools.islice(data, 1, None)

演示:

>>> a = [1, 2, 3, 1]
>>> head = a[0]
>>> tail = itertools.islice(a, 1, None)
>>> head in tail
True

请注意,你只能遍历它一次,但如果你只想检查头部是否在尾部并且你担心内存,那么我认为这是最好的选择。

关于python - 以 Pythonic 的方式获取列表的尾部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com