3

私は自分のコードをリファクタリングしたいと思っています.perlでは、 (a, b, c) = (x, y, z)「複数の割り当て」のようなステートメントがあったことを覚えています。このことはPythonにも存在すると聞きましたが、正確に「複数の割り当て」を行う必要はありません。

同じサイズの 3 つのリストがあり、知る必要があります。次のような方法でそれらからアイテムを取得できますか。

for a, b, c in a_list, b_list, c_list:
   pass

私のテストでは、 a_list の最初の 3 つの要素を取得するだけですが、(a = a_list[0], b = a_list[1], c = a_list[2])a_list から 1 つの要素、 b_listから(a = a_list[0])1 つの要素を取得し、各反復で次の項目を取得する必要があります。(b = b_list[0])c_list

4

2 に答える 2

5

使用zip:

for a, b, c in zip(a_list, b_list, c_list):
   pass

実際には次と同等であるため、コードは機能しませんでした。

for lis in (a_list, b_list, c_list):
    a, b, c = lis  #assign the items of list fetched from the `tuple` to a, b ,c
于 2013-11-10T20:24:11.337 に答える
5

できるよ:

for a, b, c in zip(a_list, b_list, c_list):
   pass

リストの長さが等しくない場合は、一方のitertools.izip_longestリストが他方よりも長い場合に「塗りつぶし値」を使用するものを使用できます。

于 2013-11-10T20:24:23.480 に答える