1

L1 のすべての int が、対応する位置にある L2 の文字列の長さである場合にのみ、True を返さなければならない関数があります。前提条件: len(L1) == len(L2)。

例:

>>> are_lengths_of_strs([4, 0, 2], ['abcd', '', 'ef']) 
True

以下は機能です:

def are_lengths_of_strs(L1, L2):
    result = True
    for i in range(len(L1)):
        if i in len(L1) != len(L2):
            result = False
    return result

エラーになります。行 if i in len(L1) != len(L2):が間違っています。誰かがこの行で私を助けることができますか??

Obs : 使用する必要があります!=

4

3 に答える 3

1

コードの修正版:

def are_lengths_of_strs(L1, L2):
    result = True
    for i in range(len(L1)):
        if L1[i] != len(L2[i]):
            result = False
    return result

実際にはここにインデックスは必要ないため、これは pythonic ではないことに注意してください。

def are_lengths_of_strs(L1, L2):
    result = True
    for i, l in zip(L1, L2)
        if i != len(l):
            result = False
    return result

さらに短い:

def are_lengths_of_strs(L1, L2):
    return all(i == len(l)
        for i, l in zip(L1, L2))
于 2012-11-17T20:03:54.110 に答える
0

あなたのif状態はおそらく問題です:

    if i in len(L1) != len(L2):

これは かどうかをチェックしますi in len(L1)len(L1)、整数であり、別の数値を「含む」ことはできません。

各リストの要素を反復処理する必要があります。

def are_lengths_of_strs(L1, L2):
    result = True

    for i in range(len(L1)):
        if L1[i] != len(L2[i]):
            result = False

    return result

また、取り除くresult。簡単なreturnステートメントは問題なく機能します。

def are_lengths_of_strs(L1, L2):
    for i in range(len(L1)):
        if L1[i] != len(L2[i]):
            return False

    return True

さらに Pythonic を取得したい場合は、次を使用しますzip

def are_lengths_of_strs(L1, L2):
    for a, b in zip(L1, L2)
        if a != len(b):
            return False

    return True
于 2012-11-17T20:09:14.907 に答える
0

all()と一緒にビルトインを使用しますzip()

In [5]: all(x==len(y) for x,y in zip([4, 0, 2], ['abcd', '', 'ef']))
Out[5]: True

または!=強制使用の場合any():

In [7]: not any(x != len(y) for x,y in zip([4, 0, 2], ['abcd', '', 'ef']))
Out[7]: True

またはコードを改善する:

def are_lengths_of_strs(L1, L2):
    for x,y in zip(L1,L2):
        if x!=len(y):
            return False
    return True


In [12]: are_lengths_of_strs([4, 0, 2], ['abcd', '', 'ef'])
Out[12]: True
于 2012-11-17T20:03:44.417 に答える