如何修復代碼?AND在Python的模塊切片中
我想有i % 3 == 1
和i != 16
不成功
data = "8|9|8|9|8|9|8|9|9|8|9|8|9|8|9|8"
arra = map(int,data.split("|"))
arra = sum(arra[1::3 and != 16]) for i in range(0, len(arra), 16)]
|
|---// Problem here
如何修復代碼?AND在Python的模塊切片中
我想有i % 3 == 1
和i != 16
不成功
data = "8|9|8|9|8|9|8|9|9|8|9|8|9|8|9|8"
arra = map(int,data.split("|"))
arra = sum(arra[1::3 and != 16]) for i in range(0, len(arra), 16)]
|
|---// Problem here
試試這個:
arra = sum(a for i,a in enumerate(arra) if i %3==1 and i != 16)
對於這種複雜的工作,切片標誌不會真的。但是,你爲什麼要重新排列陣列?您清除了原始值的列表。
切片不喜歡的工作。
Paul McGuire有正確的代碼:
arra = sum(x for i, x in enumerate(arra) if i % 3 == 1 and i != 16)
它也不會從你的代碼是什麼for i in range(0, len(arra), 16)]
點應該是清楚的。你想達到什麼目的?
OP不想跳過*值* == 16,但*索引* == 16. – PaulMcG 2009-11-06 20:38:40
@Paul McGuire:啊是的。我的錯。我糾正了我的答案。 – 2009-11-06 20:41:23
使用'enumerate()'的+1。這是正確的答案。 – 2009-11-06 20:43:39