繁体   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