Python 从两个元组创建列表
我有两个元组:Python 从两个元组创建列表,python,list,tuples,Python,List,Tuples,我有两个元组: dCF3t=((((1.90683376789093, -44705.1875), (1.90689635276794, -44706.76171875)),),) dU1t=((((0.0, 0.00244894321076572), (0.00249999994412065, 0.00782267469912767)),),) 我需要用每个元组的第二列的值创建一个列表: dFD=[] dFD.append([x[1] for x in dU1t, y[1] for y in
dCF3t=((((1.90683376789093, -44705.1875), (1.90689635276794, -44706.76171875)),),)
dU1t=((((0.0, 0.00244894321076572), (0.00249999994412065, 0.00782267469912767)),),)
我需要用每个元组的第二列的值创建一个列表:
dFD=[]
dFD.append([x[1] for x in dU1t, y[1] for y in dCF3t])
例如:
dFD=[[0.00244894321076572,-44705.1875],[0.00782267469912767,-44706.76171875]]
但它给了我一个错误:名称“y”未定义
注意:这两个元组都是从元组列表中创建的
编辑:
要避免元组末尾出现,),)
,请考虑:
dCF3t=[[((1.90683376789093, -44705.1875), (1.90689635276794, -44706.76171875))]]
dU1t=[[((0.0, 0.00244894321076572), (0.00249999994412065, 0.00782267469912767))]]
解决方案:
dFD=[]
for i in range(0, len(dU1t[0][0])):
dFD.append([dU1[0][0][i][1],dCF3[0][0][i][1]])
我怀疑你想要这样的东西:
dFD.append([x[1] for x in dU1t]+[y[1] for y in dCF3t])
尽管如此,您可能希望使用
extend
而不是append
,除非您希望dFD在列表中包含一个列表。我怀疑您希望这样:
dFD.append([x[1] for x in dU1t]+[y[1] for y in dCF3t])
尽管如此,您可能希望使用
extend
而不是append
,除非您希望dFD在列表中包含列表。这似乎与您的示例相符:
dFD = [[x[1], y[1]] for x,y in zip(dU1t[0], dCF3t[0])]
这似乎与您的示例相符:
dFD = [[x[1], y[1]] for x,y in zip(dU1t[0], dCF3t[0])]
我相信你在找我
dFD=[[x[1],y[1]] for x,y in zip(dU1t[0], dCF3t[0])]
一般来说,你应该尽量避免附加东西;它通常会减慢速度,因为它可能需要将整个列表复制到内存中的新位置。在您的示例中,append语句本质上是微不足道的,因此它不会花费您太多,但它也完全没有必要。我相信您正在寻找它
dFD=[[x[1],y[1]] for x,y in zip(dU1t[0], dCF3t[0])]
一般来说,你应该尽量避免附加东西;它通常会减慢速度,因为它可能需要将整个列表复制到内存中的新位置。在您的示例中,append语句本质上是微不足道的,因此它不会花费您太多,但它也完全没有必要。好的,这里有几个问题:
dCF3t=(1.90683376789093, -44705.1875), (1.90689635276794, -44706.76171875)
dU1t=(0.0, 0.00244894321076572), (0.00249999994412065, 0.00782267469912767)
如果无法以这种形式生成它们,请尝试使用
dCF3t = dCF3t[0][0]
dU1t = dU1t[0][0]
dFD.extend()
而不是dFD.append()
。Extend添加传递给它的iterable的所有元素,而append只是将它的参数添加到列表中。也就是说,没有必要使用这两种方法,因为列表一开始是空的。您可以简单地将其直接设置为列表dFD = [(x[1], y[1]) for x, y in zip(dU1t, dCF3t)]
好的,这里有几个问题:
dCF3t=(1.90683376789093, -44705.1875), (1.90689635276794, -44706.76171875)
dU1t=(0.0, 0.00244894321076572), (0.00249999994412065, 0.00782267469912767)
如果无法以这种形式生成它们,请尝试使用
dCF3t = dCF3t[0][0]
dU1t = dU1t[0][0]
dFD.extend()
而不是dFD.append()
。Extend添加传递给它的iterable的所有元素,而append只是将它的参数添加到列表中。也就是说,没有必要使用这两种方法,因为列表一开始是空的。您可以简单地将其直接设置为列表dFD = [(x[1], y[1]) for x, y in zip(dU1t, dCF3t)]
我不完全清楚你想做什么。在你的例子中,你能说出你想要它返回什么吗?@azgult:完成!谢谢,我不太清楚你想做什么。在你的例子中,你能说出你想要它返回什么吗?@azgult:完成!感谢在我的例子中,我有
dCF3t=(((1.90683376789093,-44705.1875),(1.90689635276794,-44706.76171875)),)
并且您的代码给出了索引器:元组索引超出范围。如何将dCF3t
转换为(((1.90683376789093,-44705.1875),(1.90689635276794,-44706.76171875))
或类似内容?抱歉,当我创建我的答案时,您的帖子有一些稍微不同的变量。我现在已经改正了。不过,您的错误意味着您没有在步骤1中添加替换项。;可以直接执行此操作,但是步骤3中的代码看起来稍有不同:dFD=[(x[1],y[1])对于x,y在zip中(dU1t[0][0],dCF3t[0][0])
在我的例子中,我有dCF3t=((1.90683376789093,-44705.1875),(1.90689635276794,-44706.76171875)),),),
并且您的代码给出了索引器:元组索引超出范围。如何将dCF3t
转换为(((1.90683376789093,-44705.1875),(1.90689635276794,-44706.76171875))
或类似内容?抱歉,当我创建我的答案时,您的帖子有一些稍微不同的变量。我现在已经改正了。不过,您的错误意味着您没有在步骤1中添加替换项。;可以直接执行此操作,但是步骤3中的代码看起来稍有不同:dFD=[(x[1],y[1])对于zip中的x,y(dU1t[0][0],dCF3t[0][0])]