4

本当に些細な入門レベルのpythonの質問をお詫びします。

現在、Google Python のチュートリアルに取り組んでいますが、それを突き止めないとつまずく可能性がある何かにぶつかります。

それを読むと、両方のリストの長さが正である間、while ループが動作するように見えます。したがって、両方のリストの長さ == 0 になると、while ループは 0 に達して終了します。

これを精神的に解析する方法がわかりません-条件が両方の長さ== 0であり、andステートメントとandが0と0であり、負の条件を与えて終了するかどうか。

それを読んで、while '5' と '6' として解析します (たとえば、5 と 6 がリストの len である場合)。これまでのところ、この方法で while ループを使用したことはありません (1 日ほどしか使用していません)。

取得できないコード ビット (抽象的な行)

while len(list1) and len(list2):

コンテキスト内のコード

def linear_merge(list1, list2):

  result = []     
  while len(list1) and len(list2):
    if list1[0] < list2[0]:
      result.append(list1.pop(0))
    else:
      result.append(list2.pop(0))    

  result.extend(list1)
  result.extend(list2)
  return result

よろしくお願いします。

4

3 に答える 3

4
while len(list1) and len(list2):

list1 と list2 の両方が空でない間、ループを続けます。いずれかのリストが空の場合、ループは終了します。

False(ブール値のコンテキストでは、 、None0""、または以外の値[]は true として評価されます。)

于 2013-04-26T11:14:48.247 に答える
2

これを理解する鍵はpopステートメントです。

基本的に、関数は 2 つの既に並べ替えられたリストを、両方のリストのすべての要素を含む 1 つのリストにマージします。これはマージソート アルゴリズムの一部です。これは次のように機能します。

  • 両方のリストに残りの要素が含まれている限り、次のループを繰り返します
    • リストの先頭から小さい方の要素 (つまり、最初の要素) を選択します
    • それぞれのリストから要素を削除し、結果リストに追加します
    • 繰り返す
  • 次に、リストの最大 1 つにまだ要素が含まれています。そのリストの残りの要素を結果に追加します。
于 2013-04-26T11:52:09.577 に答える