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只是将它的参数添加到列表中。也就是说,没有必要使用这两种方法,因为列表一开始是空的。您可以简单地将其直接设置为列表

  • 列表理解本身就是实际出错的部分。问题是您试图在同一列表中迭代两个不同的对象;出于您的目的,python的方法在这里非常理想:

    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只是将它的参数添加到列表中。也就是说,没有必要使用这两种方法,因为列表一开始是空的。您可以简单地将其直接设置为列表

  • 列表理解本身就是实际出错的部分。问题是您试图在同一列表中迭代两个不同的对象;出于您的目的,python的方法在这里非常理想:

    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])]