我想从两个列表中创建一个新列表。你知道吗
一个列表(自序)包含由来自QlineEdit()的输入生成的所需索引。例如,当我在QlineEdit中键入0,1,2,6:11,0,23时,输出的列表如下所示(输入自动转换为unicode):
[u'0', u'1', u'2', u'6:11', u'0', u'23']
另一个列表(xcoord)只是一个常规的值列表。你知道吗
新创建的列表应该包含列表中的值(自序)但只在索引从列表(坐标)。 这是我的密码。现在给出了一个类型错误:列表索引必须是整数,而不是列表
self.sequence_input = QtGui.QLineEdit()
def on_adjust(self):
self.sequence = self.sequence_input.text().split(',')
print self.sequence
self.xseq = self.xcoord[self.sequence]
self.yseq = self.ycoord[self.sequence]
print self.xse
我以前也研究过类似的问题,但我无法将答案应用到我的案例中。我对python还比较陌生。你知道吗
列表索引必须是int
self.sequence
的值是[u'0', u'1', u'2', u'0', u'23']
(这里省略了片段,下面有更多内容)意味着它是unicode字符串的列表,要使用其中的值作为列表索引,您必须将这些值转换为int
例如现在,
int_sequences
中的每个元素都是一个int,可以用来索引列表例如
“用列表访问列表”,简单的列表理解就可以了
因此,要获得
xcoord
和ycoord
的所有序列,可以执行以下操作:扩展切片
压扁
对于要用作索引列表的列表,它需要是平面的,其中每个元素都是有效的索引,例如int,如
[1, 2, 3, 4, 5]
中的,而不是[1, [2, 3, 4], 5]
。我们可以使用下面的代码用itertools.chain()
将其展平它的行为类似于一个列表,但您可以显式地将其转换为
list()
显示把它们放在一起
注意
如果
6:11
表示[6, 7, 8, 9, 10, 11]
,只需相应地修改expand_slice()
函数,例如使用xrange(int(a), int(b) + 1)
,但我在这里输入的行为是Python传统中的默认行为我不会对您的输入进行验证,但您可以在异常出现时捕获异常并将其报告给接口(在Python中,请求原谅通常比请求允许更优雅)
将字符串列表(带片段)转换为python列表的常规索引器
不能使用字符串对列表进行索引或切片。您必须将输入从unicode解析为int。问题是您还有片
6:11
。 解决方案可以是这样的:将最终列表展平
现在您可能有一个列表,因为切片返回一个列表。然后可以同时展平
self.xseq
和self.yseq
。你知道吗以下是一种稍微不同的方法:
这为我的示例数据提供了以下输出:
注意,您需要确保序列经过消毒,只包含切片。你知道吗
相关问题 更多 >
编程相关推荐