gpt4 book ai didi

python - 最后的列表元素和条件循环

转载 作者:行者123 更新时间:2023-11-30 23:36:17 24 4
gpt4 key购买 nike

mylist="'a','b','c'"

count=0
i=0

while count< len(mylist):
if mylist[i]==mylist[i+1]:
print mylist[i]
count +=1
i +=1

错误:

File "<string>", line 6, in <module>
IndexError: string index out of range

我假设当它到达最后一个(第 n 个)元素时,它找不到与之比较的 n+1 个元素,所以它给了我一个错误。

有趣的是,我认为我以前已经这样做过,并且在更大的列表中没有遇到过这个问题:这是一个示例(感谢 Raymond Hettinger 修复了它)

list=['a','a','x','c','e','e','f','f','f']

i=0
count = 0

while count < len(list)-2:
if list[i] == list[i+1]:
if list [i+1] != list [i+2]:
print list[i]
i+=1
count +=1
else:
print "no"
count += 1
else:
i +=1
count += 1

对于按照我尝试的方式爬行列表,是否有任何修复方法可以使我不会“超出范围”?我计划在一个非常大的列表上实现这一点,例如,我必须检查是否“list[i]==list[i+16]”。将来,我想添加“if int(mylist[i+3])-int(mylist[i+7])>10: newerlist.append[mylist[i]”等条件。所以解决这个问题对我来说很重要。

我想过插入一个break语句,但没有成功。

我知道这不是最有效的,但我正处于我最理解的阶段。

最佳答案

所以听起来您正在尝试比较列表中各种固定偏移量的元素。也许这样的事情可以帮助你:

for old, new in zip(lst, lst[n:]):
if some_cond(old, new):
do_work()

说明:

lst[n:] 返回 lst 的副本,从第 n 个(注意 0 索引)元素开始

>>> lst = [1,2,2,3];
>>> lst[1:]
[2,2,3]

zip(l1, l2) 创建一个新的元组列表,每个列表中包含一个元素

>>> zip(lst, lst[1:])
[(1, 2), (2, 2), (2, 3)]

请注意,一旦任一列表用完,它就会停止。在这种情况下,偏移量列表首先用完。

对于元组列表,您可以在循环变量中“直接打包”,因此

for old, new in zip(lst, lst[1:])

循环遍历您想要的元素(列表中的连续元素对)

关于python - 最后的列表元素和条件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635922/

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