gpt4 book ai didi

python - List 上的动态子字符串。变量前 10 个元素

转载 作者:行者123 更新时间:2023-11-28 17:38:53 25 4
gpt4 key购买 nike

我对动态子字符串有疑问。我有一个列表,它可以包含 1000 个元素、100 个元素甚至 20 个元素。我想复制该列表,其中包含从 -10 到变量的元素。例如(伪代码):

L = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
variable = 12
print L[substring:variable]
>>> L = [2,3,4,5,6,7,8,9,10,12]

我不知道如何让它正确。关键是变量总是以一个为单位变化。

这是我的一段代码:

def Existing(self, Pages):
if(self.iter <= 10):
list = self.other_list[:self.iter]
else:
list = self.other_list[self.iter-10:self.iter]
result = 0
page = Pages[0]

list.reverse()

for blocks in Pages:
if(list.index(blocks) > result):
result = list.index(blocks)
page = blocks

return page

该方法正在寻找具有最远索引的元素。这部分可以不清楚。所以假设我们有

list = [1,2,3,4,1,5,2,1,2,3,4]

方法应该返回 5,因为它是最远的元素。 List 有重复项并且 .index() 返回第一个元素的索引,所以我反转列表。使用该代码有时程序会返回列表中不存在的某些元素。问题(在与调试器进行深入审查后)与 self.other_list 中的子字符串有关。

你能帮我解决这个问题吗?如何使它正确?感谢您的任何建议。

编辑:因为我的问题不够清楚(我确信它可以),所以这里有更多的例子。

好的,所以列表页面是包含当前使用的页面的列表。第二个列表“列表”是已使用的所有页面的列表。方法是寻找已经使用过的页面,然后选择最长时间未使用的页面。 “使用”一词是指元素的索引。最远的元素是什么意思?最小索引的那一个(记住重复项,最后一个重复项意味着真正的索引)。

所以我们有:

Pages = [1,3,5,9]

list = [1,2,5,3,6,3,5,1,2,9,3,2]

方法应该返回 5。

总结一下:我正在寻找给出结果的子字符串:

With list =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 
For variable 12: [2,3,4,5,6,7,8,9,10,12]
for 13: [3,4,5,6,7,8,9,10,11,13]

等:-)我知道这个问题可能很复杂。所以我会要求你只关注子字符串。 :-) 非常感谢!

最佳答案

如果我对你的问题的理解正确,你想从 lst 中最小位置的页面中找到项目的索引(考虑重复项)。

因此,为此您需要先反转列表,然后首先在 lst 中的页面中的每个项目的索引,如果找不到项目则返回负 Infinity。在这些索引中,您可以找到最大项,然后您将得到答案。

from functools import partial

pages = [1,3,5,9]
lst = [1,2,5,3,6,3,5,1,2,9,3,2]

def get_index(seq, i):
try:
return seq.index(i)
except ValueError:
return float('-inf')


lst.reverse()
print max(pages, key=partial(get_index, lst))
#5

请注意,上述方法将花费二次方时间,因此对于大型列表而言效果不佳。如果您不关心一些额外的内存,而是线性时间,那么您可以为此使用 set 和 dict:

pages_set = set(pages)
d = {}
for i, k in enumerate(reversed(lst), 1):
if k not in d and k in pages_set:
d[k] = len(lst) - i

print min(d, key=d.get)
#5

关于python - List 上的动态子字符串。变量前 10 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27366170/

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