[英]How to fix error - TypeError: unsupported operand type(s) for -: 'tuple' and 'int'
[英]How do I fix the error? TypeError: unsupported operand type(s) for -: 'tuple' and 'int'
我有一個任務:給定一個數組 a0, a1,…, an − 1。 對於每個元素,找到從它到最近零的距離。 保證零在數組中至少出現一次。
輸入數據 輸入的第一行包含一個 integer n (1≤n≤2⋅105) - 數組的長度 a。 第二行包含數組的元素,以空格分隔(-109≤ai≤109)。
Output 打印序列 d0, d1,…, dn − 1。di 值必須等於從 position i 處的元素到最近的零元素的距離。
這是我的解決方案:
n=int(input()) a=list(map(int, input().split())) b = [i for i in range(len(a)) if a[i] == 0] print(*[min(abs(i - j) for j in b) for i in enumerate(a)])
但是我收到錯誤 TypeError: unsupported operand type(s) for -: 'tuple' and 'int'。 我怎么解決這個問題? 怎么寫不一樣?
function enumerate
返回一個導致TypeError
的元組。 您可以只保留一個占位符變量將元組分成 i 和另一個占位符變量,如下所示:
print(*[min(abs(i - j) for j in b) for i,_ in enumerate(a)])
或者,根本不使用enumerate
。
print(*[min(abs(i - j) for j in b) for i in range(n)])
枚舉 function 用於同時獲取列表的索引和數據。 因此 enumerate 為數據提供 enumerate(a) 中的索引
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.