Python 转换元组列表,使[(a,b,c)]转换为[(a,b),(a,c)]
我该怎么做呢?我希望元组中的第一个值与每个连续值配对。这样,每个结果元组将是一对,从第一个值开始 我需要这样做:[(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
(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')]