簡體   English   中英

如何將列表中的元組(在一個元組內)轉換為列表?

[英]How do I convert a tuple within a list (within a tuple) to a list?

我環顧四周,找不到真正有幫助的東西。

我使用的代碼如下:

xy = (event.xdata, event.ydata)
a = self.charges.get_charges()
a[self.closest_k][1] = xy

我在搞一個GUI,我的問題是我需要用光標的位置“移動” GUI上對象的位置。 xy返回我需要作為數組的一對坐標, self.closest_k返回一個數字(有許多對象,而self.closest_k返回我要移動的對象的索引)。

a = [(1.0, array([ 1.,  0.])), (1.0, array([-1.,  0.])), (-1.0, array([ 0., -1.])), (-1.0, array([ 0., -1.]))]

問題是元組是不可變的,並且由於這是一個賦值,所以我不允許更改函數get_charges() 事先我更換了:

a = self.charges.get_charges()
a[self.closest_k][1] = xy

與:

self.charges._pos[self.closest_k, :] = xy

但是在執行靜態代碼分析后,我獲得了警告消息MyMplWidget.on_mouse_move: Access to a protected member _pos of a client class 因此,我想尋求一種解決方法,我考慮過將元組轉換為列表,但並沒有將元組內的元組轉換為列表。

編輯1:

好的,這是對我以前的改進。 每當我嘗試拖動對象時,運行代碼都不會返回錯誤。 這是發生了什么:

[(1.0, array([ 1.,  0.])), (1.0, array([-1.,  0.])), (-1.0, array([ 0., 1.])), (-1.0, array([ 0., -1.]))]
(-1.0, (-0.00071672257102850523, -1.5525644333591355))

因此,我試圖拖動具有原始位置[0,-1]的對象,這樣做的過程幾乎就像創建了列表的新元素一樣,它在我拖動時會覆蓋原始位置,但是一旦我停止拖動,該對象就會恢復其原始位置。

(-1.0, (-0.00071672257102850523, -1.609902239041312))
(-1.0, array([ 0., -1.]))

在該示例中,我拖動了原始位置為[0,-1]的對象。 我放開對象后,它就會恢復其原始位置。 (這實際上並沒有在GUI上顯示,對象根本沒有移動,但這是我可以處理的不同功能的問題)。 我認為目前我的編碼工作方式(關於繪制GUI)是處理對象位置的函數期望其原始位置發生變化。 但是原始位置有點像“鎖定”在元組內部(抱歉,術語錯誤)。 我想我真的不知道該怎么辦。

如果我正確地理解了這個問題,我認為您應該只替換整個元素,而不是嘗試修改內部元組中的一個條目。 所以

a[self.closest_k] = (a[self.closest_k][0], xy)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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