[英]Consecutive values?
學習python,但是在告訴函數查找具有相同值的連續位置時遇到麻煩。 當我運行代碼時,沒有錯誤,但是給出了錯誤的輸出。 關於更改內容的建議?
def same_values(xs):
same = False
for i in (xs):
if xs == xs[1:]:
same = True
else:
return same
same_values('Misses') # This should return as true
因此,您正在列表中尋找連續的一對,如果找到一對則返回true。
def same_values(xs):
for i in range(len(xs)-1):
if xs[i] == xs[i+1]:
return True
return False
>>> same_values('misses')
True
>>> same_values('mises')
False
會給你正確答案。
但是python具有強大的迭代器代數。 這樣做的好處是它可以與迭代器(迭代器通常不支持len()
)以及列表一起使用:
import itertools as it
def same_values(xs):
a, b = it.tee(xs)
next(b, None)
return any(x == y for x, y in zip(a, b))
itertools
配方中將這種模式描述為pairwise
:
import itertools as it
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = it.tee(iterable)
next(b, None)
return zip(a, b)
def same_values(xs):
return any(x == y for x, y in pairwise(xs))
例如,檢查文件中的任何兩個連續行是否相同(這不適用於list
版本):
with open('somefile') as f:
print(same_values(f))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.