Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 转换元组列表,使[(a,b,c)]转换为[(a,b),(a,c)]_Python_Python 3.x_List_Tuples - Fatal编程技术网

Python 转换元组列表,使[(a,b,c)]转换为[(a,b),(a,c)]

Python 转换元组列表,使[(a,b,c)]转换为[(a,b),(a,c)],python,python-3.x,list,tuples,Python,Python 3.x,List,Tuples,我该怎么做呢?我希望元组中的第一个值与每个连续值配对。这样,每个结果元组将是一对,从第一个值开始 我需要这样做:[(a,b,c)]-->[(a,b,(a,c)]你可以试试这个 (t,)=[('a','b','c')] [(t[0],i) for i in t[1:]] # [('a', 'b'), ('a', 'c')] 使用 使用 a=[('a','b','c')] a=a[0] a=[范围(1,len(a))中的索引的元组([a[0],a[index]])] 试试这个 使用iterto

我该怎么做呢?我希望元组中的第一个值与每个连续值配对。这样,每个结果元组将是一对,从第一个值开始

我需要这样做:[(a,b,c)]-->[(a,b,(a,c)]

你可以试试这个

(t,)=[('a','b','c')]

[(t[0],i) for i in t[1:]]
# [('a', 'b'), ('a', 'c')]
使用

使用

a=[('a','b','c')]
a=a[0]
a=[范围(1,len(a))中的索引的元组([a[0],a[index]])]

试试这个

使用
itertools
组合模块的解决方案

from itertools import combinations  
arr = (['a','b','c'])
for i in list(combinations(arr, 2)):
    if(i[0]==arr[0]):
        print(i ,end = " ")

这将提供一个解决方案
('a','b')('a','c')

您可以将成对的元组附加到列表中:

original = [(1,2,3)]

def makePairs(lis):
    ret = []
    for t in lis:
        ret.append((t[0],t[1]))
        ret.append((t[0],t[2]))
    return ret


print(makePairs(original))
输出:

[(1, 2), (1, 3)]

如果元组长度任意,则可以编写一个简单的生成器:

def make_pairs(iterable):
    iterator = iter(iterable)
    first = next(iterator)
    for item in iterator:
        yield first, item
示例结果:

my_tuple = ('a', 'b', 'c', 'd')
list(make_pairs(my_tuple))
Out[170]: [('a', 'b'), ('a', 'c'), ('a', 'd')]

这是一个节省内存的解决方案。

请用您尝试过的代码更新您的问题。您尝试过什么,以及它的具体问题是什么?
def make_pairs(iterable):
    iterator = iter(iterable)
    first = next(iterator)
    for item in iterator:
        yield first, item
my_tuple = ('a', 'b', 'c', 'd')
list(make_pairs(my_tuple))
Out[170]: [('a', 'b'), ('a', 'c'), ('a', 'd')]