6

まず、私はpythonプログラミングの初心者であり、他の質問で多くの調査を試みましたが、このようなものに関連するものは見つかりませんでした(他のすべてはもう少し高度でした)---先に進みます。

必要な解決策: 2 つの 2 つの整数リストを調べて、等しいかどうかを比較します。理想的には、同等になるまでリストを何度も繰り返し処理することを望んでいます (これについては、コードを示した後に詳しく説明します)。list2数は、等しくなるまで何度も生成されます。

コードの説明: 乱数生成によって生成された 2 つのリストがあります。リストのサイズが等しくありません。そのためlist1、500 のエントリlist2があり、1 から 100 までさまざまな量があります。

#current attempt to figure out the comparison. 
if (list1 = list2):
     print(equalNumber)

ループについてあまり知らないかもしれませんが、リストをループさせたいのですが、どこから始めればよいのか本当にわかりません。for ループや while のようなループを使用していないのでしょうか。

これは私の番号ジェネレータです:

    for i in range(0,500):
          randoms = random.randint(0,1000)
          fiveHundredLoop.append(randoms)

2 番目のものはいくつかのことを行いますが、1 から 100 までのさまざまなエントリしかありません。 {I can't care of this yourself}

4

4 に答える 4

8

あなたの質問にはいくつかの可能な解釈があります。

1) ペアごとにリストをループし、ペアが等しい場合に停止します。

>>> s = [10, 14, 18, 20, 25]
>>> t = [55, 42, 18, 12, 4]
>>> for x, y in zip(s, t):
        if x == y:
            print 'Equal element found:', x
            break


Equal element found: 18

2) リストをループし、いずれかの要素が最初のリスト内の他の要素と等しいときに停止します。これは、セットが役立つケースです (メンバーシップ テストを高速に実行します)。

>>> s = {18, 20, 25, 14, 10}
>>> for x in t:
        if x in s:
            print 'Equal element found', x
            break


Equal element found 18

3) 要素ごとに両方をループし、それらの値を比較します。

>>> s = [10, 14, 18, 20, 25]
>>> t = [55, 42, 18, 12, 4]
>>> [x==y for x, y in zip(s, t)]
[False, False, True, False, False]
于 2013-01-27T18:09:16.097 に答える
6

それはセットの仕事です:

>>> l1 = [1,2,3,4,5]
>>> l2 = [5,6,7,8,9]
>>> set(l1) & set(l2)
{5}
于 2013-01-27T18:04:51.470 に答える
3

セットを使いたくない場合

a = [1,2,3]
b = [3,2,4,5]
c = [i for i in a if i in b]
于 2013-01-27T18:08:12.640 に答える
0

リストをlist1およびlist2と想定します。ランダムジェネレーターコードからの0から1000までの値を持つ500のエントリを持つlist1。x個のエントリxを持つlist2は500ではありません。500を超えることも500未満にすることもできます。質問から明らかではなく、1から100の範囲の値を持ちます。

// This will return the matching one.  
set(list1).intersection(set(list2))
于 2013-01-27T18:25:02.613 に答える