2016-09-22 12 views
0

複数の入力リストがある場合、リスト内でifステートメントをどのように使用しますか?ここで私が使用しているコードと私が得ているエラーがあります:Pythonリスト内の複数の入力リストに対してifを使用する

(私はリストにモジュラスを適用することはできませんが、各リストのxを具体的に参照する方法がわかりませんそれはそれらを反復処理として)

a = [1,2,3] 
b = [4,5,6] 

nums = [x**2 for x in (a,b) if x%2==0] 
print(nums) 

TypeError: unsupported operand type(s) for %: 'list' and 'int' 

答えて

3

これはifステートメントを使用して原因ではない、ここでの問題はx in (a, b)です。それが実行される、xlist値(第1 a、その後、b)をとり、その後、Pythonはそれであなたのif条件を実行しようと試みますと、フォームの発現:

[1, 2, 3] % 2 

が明らかにISNれ、実行されます許可されていません。あなたは、Python >= 3.5を使用している場合も[]リテラルリストに解凍でき

a = [1,2,3] 
b = [4,5,6] 

nums = [x**2 for x in chain(a,b) if x%2==0] 
print(nums) 
[4, 16, 36] 

を::

代わりに、一緒にチェーンにitertoolsから両方のリストをchainを使用し、それらからxテイク値を作ります

nums = [x**2 for x in [*a, *b] if x%2==0] 
1

ジムが言ったように、modintのリストです。

+、たとえばnums = [x**2 for x in a+b if x%2==0]を使用することもできます。

関連する問題