簡體   English   中英

連續值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM