Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取成对元组列表中的第n个元素?_Python_List_Tuples - Fatal编程技术网

Python 如何获取成对元组列表中的第n个元素?

Python 如何获取成对元组列表中的第n个元素?,python,list,tuples,Python,List,Tuples,在这段代码中,我如何访问a1、b1、c1和d1的值?我觉得这可能是一种不直观的方式来做我想做的事情,但我想知道这是否可行。当我试着打字时,说 a=[((a1,a2),(b1,b2)),((c1,c2),(d1,d2))] ((a1,a2),(b1,b2)) 然后它会回来 a[0] 这不是我想要的 我想退货,比如 a=[((a1,a2),(b1,b2)),((c1,c2),(d1,d2))] ((a1,a2),(b1,b2)) 假设这是Python: answer_list=[(a1,b

在这段代码中,我如何访问a1、b1、c1和d1的值?我觉得这可能是一种不直观的方式来做我想做的事情,但我想知道这是否可行。当我试着打字时,说

a=[((a1,a2),(b1,b2)),((c1,c2),(d1,d2))]
((a1,a2),(b1,b2))
然后它会回来

a[0]
这不是我想要的

我想退货,比如

a=[((a1,a2),(b1,b2)),((c1,c2),(d1,d2))]
((a1,a2),(b1,b2))

假设这是Python:

answer_list=[(a1,b1),(c1,d1)]
这是因为:

a1 = a[0][0][0]
b1 = a[0][1][0]
c1 = a[1][0][0]
d1 = a[1][1][0]
所以

因此

a[0][0] == (a1, a2)
a[0][1] == (b1, b2)

假设你的列表总是像你展示的那样

是的,使用列表理解,你可以简单地做到:

from itertools import chain

a=[(('a1','a2'),('b1','b2')),(('c1','c2'),('d1','d2'))]
print list(chain.from_iterable(map(lambda x:zip(*x)[0],a)))

randlet的回答显示了在Joran Beasley回答上展开的逻辑。这里是仅使用列表理解的代码示例,没有
itertools

打印列表(x[0]代表a中的t代表x中的t)
这几乎等同于:


更多关于列表理解的信息,请参见itertools,它提供了一种方法,可以将嵌套列表的列表一次展平一个级别:

你可以试试:

result = list()
for t in a:
    for x in t:
        result.append(x[0])
print result

然后根据需要访问您的数据

为了进一步回答我的问题,我将如何将这些数据配对到新的元组列表中?因此,answerlist=[(a1,b1),(c1,d1)]给定一个平面列表,您可以将其与
zip(l[::2],l[1::2])
配对,但请注意,如果列表中的元素数为奇数,它将删除最后一个元素。另外,在同一个问题中继续问新问题通常不是一个好主意。你可以说:answerlist=[tuple(answerlist[:2]),tuple(answerlist[2:])]列表理解文档可以在
result = list()
for t in a:
    for x in t:
        result.append(x[0])
print result
from itertools import chain

# the recipe...
def flatten(listOfLists):
    # "Flatten one level of nesting"
    return chain.from_iterable(listOfLists)

a=[((1,2),(3,4)),((5,6),(7,8))]

print([list(flatten(t)) for t in a])
#   [[1, 2, 3, 4], [5, 6, 7, 8]]

print(list(flatten(flatten(a))))
#   [1, 2, 3, 4, 5, 6, 7, 8]