簡體   English   中英

如何修復錯誤? TypeError: 不支持的操作數類型 -: 'tuple' 和 '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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM