2017-06-02 29 views
2

這應該很簡單。我想列出從1到50可以被3整除的所有數字:Python3,可被三整除,typeError

a = [i for i in range(1,51) ] 

[i for i in a % 3 == 0] 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-50-42b9611b86db> in <module>() 
----> 1 [i for i in a % 3 == 0] 

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

爲什麼我得到這個TypeError?

+3

我想你想''我爲我如果我%3 == 0]'。你遺漏了'如果我'的部分。 – Blckknght

+0

還要注意''a = [我爲我在範圍(1,51)]'更好地寫爲'a = list(範圍(1,51))' –

+2

並且爲什麼不只是'[3 * i for i in範圍(1,51 // 3)]'甚至是'列表(範圍(3,51,3))'? –

回答

2

正如你可能想要的評論指出:

>>> [i for i in range(1, 51) if i % 3 == 0] # included an "if" 
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48] 

Alternativly你可以直接從修改range創建它們:

>>> [3 * i for i in range(1, 51 // 3)] 
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48] 

>>> list(range(3, 51, 3)) 
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48] 

在你的情況你得到TypeError因爲你用a % 3alist,不支持除法或模操作。

相關問題