Python 如何使用现有元组列表创建新的元组列表
我有一个这样的元组列表-Python 如何使用现有元组列表创建新的元组列表,python,list,tuples,Python,List,Tuples,我有一个这样的元组列表- list1 = [('alpha', 'beta'), ('beta','gama') ('alpha','lamda') ('gama', 'lamda'), ('euphor', 'tuphor')] 我想根据- 对于原始列表中不存在的每一对,将包含在新列表中,如下所示: new_list = [('alpha','gama'), (alpha, tuphor),
list1 = [('alpha', 'beta'),
('beta','gama')
('alpha','lamda')
('gama', 'lamda'),
('euphor', 'tuphor')]
我想根据-
对于原始列表中不存在的每一对,将包含在新列表中,如下所示:
new_list = [('alpha','gama'),
(alpha, tuphor),
(alpha, euphor),
(beta,lamda),
()...]
同样地
有人能建议在python中这样做的方法吗
谢谢。这里有一个使用
itertools
和集合的解决方案:
list1 = [('alpha', 'beta'),
('beta','gama'),
('alpha','lamda'),
('gama', 'lamda'),
('euphor', 'tuphor')]
all_items = set(itertools.chain(*list1))
all_pairs = set(itertools.product(all_items, all_items))
new_pairs = all_pairs.difference(list1)
结果(新的\u对
)是:
下面是一个使用
itertools
和集合的解决方案:
list1 = [('alpha', 'beta'),
('beta','gama'),
('alpha','lamda'),
('gama', 'lamda'),
('euphor', 'tuphor')]
all_items = set(itertools.chain(*list1))
all_pairs = set(itertools.product(all_items, all_items))
new_pairs = all_pairs.difference(list1)
结果(新的\u对
)是:
你可以
- 收集不同的物品
- 计算所有排列
- 获取所有组合与现有组合之间的差异
- 收集不同的物品
- 计算所有排列
- 获取所有组合与现有组合之间的差异
列表1=[('alpha','beta'),
(‘beta’,‘gama’),
('alpha','lamda'),
(“gama”、“lamda”),
('euphor','tuphor')]
元素=列表(设置([e代表列表中的l,e代表列表中的e])#查找所有唯一的元素
完成列表=列表(组合(元素,2))#生成所有可能的组合
#转换为集合以取消顺序
set1=[为列表1中的l设置(l)]
complete_set=[在complete_列表中为l设置(l)]
#在“complete_set”中查找集合,但不在“set1”中查找集合`
ans=[如果l不在集合1中,则完整集合中l的列表(l)]
输出:
[['euphor', 'lamda'],
['euphor', 'gama'],
['euphor', 'beta'],
['euphor', 'alpha'],
['lamda', 'beta'],
['lamda', 'tuphor'],
['gama', 'alpha'],
['gama', 'tuphor'],
['beta', 'tuphor'],
['tuphor', 'alpha']]
来自itertools导入组合的
列表1=[('alpha','beta'),
(‘beta’,‘gama’),
('alpha','lamda'),
(“gama”、“lamda”),
('euphor','tuphor')]
元素=列表(设置([e代表列表中的l,e代表列表中的e])#查找所有唯一的元素
完成列表=列表(组合(元素,2))#生成所有可能的组合
#转换为集合以取消顺序
set1=[为列表1中的l设置(l)]
complete_set=[在complete_列表中为l设置(l)]
#在“complete_set”中查找集合,但不在“set1”中查找集合`
ans=[如果l不在集合1中,则完整集合中l的列表(l)]
输出:
[['euphor', 'lamda'],
['euphor', 'gama'],
['euphor', 'beta'],
['euphor', 'alpha'],
['lamda', 'beta'],
['lamda', 'tuphor'],
['gama', 'alpha'],
['gama', 'tuphor'],
['beta', 'tuphor'],
['tuphor', 'alpha']]
您只需获得原始列表中的唯一名称,然后应用
if
条件。试试这个,如果你遇到任何问题,请告诉我
new_list = []
names = set(np.array(list1).ravel())
for i in names:
for j in names:
if i!=j:
if ((i,j) not in list1) & ((j,i) not in list1) & ((i,j) not in new_list) & ((j,i) not in new_list):
new_list.append((i,j))
您只需获得原始列表中的唯一名称,然后应用
if
条件。试试这个,如果你遇到任何问题,请告诉我
new_list = []
names = set(np.array(list1).ravel())
for i in names:
for j in names:
if i!=j:
if ((i,j) not in list1) & ((j,i) not in list1) & ((i,j) not in new_list) & ((j,i) not in new_list):
new_list.append((i,j))
但是,也会生成一些重复项,如[(('gama',tuphor'),('tuphor',gama')]您可以建议如何删除这些项吗?我已经更新了代码。我刚刚应用了另外两个条件来检查元组是否存在于
新列表中。
。请检查它,然后让我知道它是否正常。但是,也会生成一些重复项,如[(('gama','tuphor'),('tuphor','gama')]你能告诉我如何删除这些吗?我已经更新了代码。我刚刚应用了另外两个条件来检查元组是否存在于新列表中
。检查一下,然后告诉我现在是否可以。您好,谢谢,尽管输出中也生成了一些不需要的副本。您能告诉我如何删除这些吗?@PranjitaChakraborty duplicate,其中?all_perm
不包含任何副本,new_perm
既不包含('alpha','euphor')('euphor','alpha'))列表中包含这样的术语。它们的位置差异不会使它们成为不同的实体,这就是我的意思duplicate@PranjitaChakraborty使用组合,因此,我更新了我的postHi,谢谢,不过也生成了一些重复项,这在输出中是不需要的。您能建议如何删除这些吗?@PranjitaChakraborty duplicate,其中?all_perm
不包含任何副本,new_perm
均不包含('alpha','euphor')('euphor','alpha'))列表中包含这样的术语。它们的位置差异不会使它们成为不同的实体,这就是我的意思duplicate@PranjitaChakraborty使用组合,因此,我已经更新了我的POST谢谢你这么多。输出正是我想要的。非常感谢你知道。你可以考虑接受最合适的答案谢谢。你是这么多。产出正是我想要的。非常感谢你知道。你可以考虑接受最合适的答案。你可以考虑接受一个答案来奖励那些对你有帮助的人,或者至少评论一下你错过了什么;你可以考虑接受一个答案来奖励那些帮助过你的人,或者至少发表评论来解释缺失的东西;)