0

このエラーが発生する理由は、偶数をサイズ順に2番目のリストに移動し、後で2番目のリストから最初の奇数にサイズ順に移動することです..私はこれの初心者です助けてください私は理解しています

def listas_par_impar(lista,lista2):
    for i in lista2:
        if (i%10)%2==0:
          lista=lista+[i]
          lista2-=[i]
        else:
            pass

    return lista, lista2
4

3 に答える 3

3

私が必要とするのは、サイズ順に偶数を2番目のリストに移動することです

まず、リストを並べ替えてから、偶数で新しいリストを作成します。この例でiは、 は次の[10,6,5,4,7,8,9,1,3,2]とおりです。

i.sort() # sorting the list
even = [] # will store the even numbers

for key,value in enumerate(i):
   if not value % 2:
       # if the number is even,
       # remove it from i and add it to
       # the even list
       even.append(i.pop(key))

リスト内包表記を使用した上記の例を次に示します。これは、リストを返すループを簡単に記述する方法です。

>>> i = [10,6,5,4,7,8,9,1,3,2]
>>> i.sort()
>>> even = [i.pop(k) for k,v in enumerate(i) if not v % 2]
>>> even
[2, 4, 6, 8, 10]
>>> i
[1, 3, 5, 7, 9]

それらを別のリストに移動するには、2 つのリストを一緒に追加します。

>>> another_list
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> another_list + even
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 4, 6, 8, 10]

次に、同じことを行い、 を並べ替えてanother_listから、奇数のみの新しいリストを作成し、それを元のリストに追加します。

于 2013-09-12T05:07:41.153 に答える
2

lista -= [i]に変換されlista = lista - [i]ます。リストから減算することはできません (ただし、2 つの iterable を連結する追加と実行は可能です)。

要素を削除したい場合は、lista.pop()それを切り取るか、スライスすることができます: lista = lista[:-1].

于 2013-09-12T04:53:22.450 に答える
2

リストからリストを減算することはできません。

x -= yは省略形ですx = x - y。演算子は+リストに対して機能しますが、 は-機能しません。

エラー メッセージに問題があるようです。将来的には、StackOverflow に問い合わせる前に、まずそれらをグーグルで検索し、別の解決策を試すことをお勧めします。

于 2013-09-12T04:54:43.237 に答える