Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在列表中获取所有可能的组合

在列表中获取所有可能的组合
EN

Stack Overflow用户
提问于 2011-02-24 14:51:19
回答 6查看 7.4K关注 0票数 7

假设我有这样的东西:

代码语言:javascript
运行
AI代码解释
复制
L1=['cat', 'dog', 'fish', 'rabbit', 'horse', 'bird', 'frog', 'mouse'...]

for x in L1:
    input1= open('file_%s'%(x), 'r')
    file1= pickle.load(input1)
    for x in L1:
        input2= open('file_%s'%(x), 'r')
        file2= pickle.load(input2)

我想得到文件的每一个组合,而不是重复已经做过的组合(一旦cat_dog完成,就不要再做dog_cat )。有没有办法让我这么做?我真正的列表是按字母顺序排列的,如果这有什么不同的话。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-24 15:20:04

您也可以将其作为生成器来执行:

代码语言:javascript
运行
AI代码解释
复制
L1=['cat', 'dog', 'fish', 'rabbit', 'horse', 'bird', 'frog', 'mouse']
tuples = [(x,y) for x in L1 for y in L1 if x != y]
for entry in tuples:
    if (entry[1], entry[0]) in tuples:
        tuples.remove((entry[1],entry[0]))
for pair in tuples:
    input1= open('file_%s'%(pair[0]), 'r')
    file1= pickle.load(input1)
    input2= open('file_%s'%(pair[1]), 'r')
    file2= pickle.load(input2)

在第一个循环之后,tuples的内容是:

代码语言:javascript
运行
AI代码解释
复制
('cat', 'dog')
('cat', 'fish')
('cat', 'rabbit')
('cat', 'horse')
('cat', 'bird')
('cat', 'frog')
('cat', 'mouse')
('dog', 'fish')
('dog', 'rabbit')
('dog', 'horse')
('dog', 'bird')
('dog', 'frog')
('dog', 'mouse')
('fish', 'rabbit')
('fish', 'horse')
('fish', 'bird')
('fish', 'frog')
('fish', 'mouse')
('rabbit', 'horse')
('rabbit', 'bird')
('rabbit', 'frog')
('rabbit', 'mouse')
('horse', 'bird')
('horse', 'frog')
('horse', 'mouse')
('bird', 'frog')
('bird', 'mouse')
('frog', 'mouse')
票数 5
EN

Stack Overflow用户

发布于 2011-02-24 14:59:59

实际上,您要问的是如何生成名称列表中包含的两个项的所有组合(而不是,这是它们的可能组合)。

这意味着您可以使用内置的itertools.combinations()生成器函数轻松(高效地)生成所需的名称对,而无需重复:

代码语言:javascript
运行
AI代码解释
复制
L1 = ['cat', 'dog', 'fish', 'rabbit', 'horse', 'bird', 'frog', 'mouse']

for pair in combinations(L1, 2):
    print(pair)
    input1 = open('file_%s' % pair[0], 'r')
    input2 = open('file_%s' % pair[1], 'r')

已处理的对:

代码语言:javascript
运行
AI代码解释
复制
('cat', 'dog')
('cat', 'fish')
('cat', 'rabbit')
('cat', 'horse')
('cat', 'bird')
('cat', 'frog')
('cat', 'mouse')
('dog', 'fish')
('dog', 'rabbit')
('dog', 'horse')
('dog', 'bird')
('dog', 'frog')
('dog', 'mouse')
('fish', 'rabbit')
('fish', 'horse')
('fish', 'bird')
('fish', 'frog')
('fish', 'mouse')
('rabbit', 'horse')
('rabbit', 'bird')
('rabbit', 'frog')
('rabbit', 'mouse')
('horse', 'bird')
('horse', 'frog')
('horse', 'mouse')
('bird', 'frog')
('bird', 'mouse')
('frog', 'mouse')
票数 22
EN

Stack Overflow用户

发布于 2011-02-24 14:58:40

itertools.combinations怎么样?

使用示例:

代码语言:javascript
运行
AI代码解释
复制
>>> list(itertools.combinations([1, 2, 3, 4, 5, 6], 2))
[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4),
(3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]

第一个参数是可迭代的,第二个是r,返回子序列的长度。

然后,您可以使用map或理解轻松地连接结果:

代码语言:javascript
运行
AI代码解释
复制
map(lambda x: x[0] + "_" + x[1], itertools.combinations(["cat", "dog", "fish"], 2)))

lambda中的x是一个r-sized元组。

上面的结果将是:

代码语言:javascript
运行
AI代码解释
复制
['cat_dog', 'cat_fish', 'dog_fish']
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5106228

复制
相关文章
用javascript替换URL中的参数值
今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从司徒正美先生的博客中淘到了一个parseUrl函数,正好可以借此实现,代码整理如下: //分析url function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol:
菩提树下的杨过
2018/01/22
3.3K0
R获取数值向量的分位数值
如果我们手上有一个数值向量,怎么用R去获取这个向量的各个分位数值呢?我们来看个具体的例子
生信交流平台
2022/09/21
1.1K0
R获取数值向量的分位数值
字符串中符号的替换---replace的用法
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() 7 { 8 string s1 = "one*two*three";//Given String 9 string s2 = "*";//delimeter 10 string s3 = ",";//string to replace 11
猿人谷
2018/01/17
3.7K0
字符串中符号的替换---replace的用法
2019-03-17 sublime中符号的替换 将回车符号换成想要的字符
⌘(command) + ⌥(option) + f find 中输入 ⌘(command)+⇧(shift) + ↩(enter) 在Rplace 中输入 想要替换的内容 点击Replace All
Albert陈凯
2019/03/20
1.6K0
2019-03-17 sublime中符号的替换 将回车符号换成想要的字符
六、变量数值计算符号和命令
可以进行小数、整数的运算,很好用 echo "7.7 9.8"|awk '{print ($1+$2),($1*$2)}'
jackxiao
2021/11/16
5980
PQ-批量“替换值”一次完成多个数值的“替换“
= List.ReplaceMatchingItems({1..10},{{1,"a"},{3,"c"}})
哆哆Excel
2022/10/31
2.2K0
07-Shell编程-数值运算符号使用
[root@node1 ~]# IPADDR=$(ifconfig eth0 | grep "inet" | awk '{print $2}')
DevOps云学堂
2019/10/18
7470
Python中的符号
1.算数运算符 2.复合赋值运算符 3.常用的格式符号
py3study
2020/01/10
2.7K0
白话解说,半分钟就懂 ---建模Matlab中符号运算和数值运算的区别?
两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符号计算并不是一件容易的事。而 Matlab 自带有符号工具箱 Symbolic Math Tooibox , 而且可以借助数学软件 Maple, 所以 Matlab 也具有强大的符号运算功能。
瑞新
2020/07/08
2.1K0
数值分析笔记(3)——数值计算中的原则
又位于分母,所以会导致误差变得非常大。要避免的另一方面的原因是,会导致有效数字位数大量减少,而我们要尽量保证有效数字多。
太阳影的社区
2021/10/15
4.7K0
为你的博客添加枫叶效果
之前从其他博客哪里搬了一个樱花落叶效果。但是我本人不是很喜欢那个樱花,而且那个樱花效果太密集太大了。很影响阅读体验,可以说是一个负优化。我这个人要求比较高,自然是很不满意这个效果,所以,我把代码稍微的改动了一下,达成了现在的效果。
小N同学
2022/03/01
4380
为你的博客添加枫叶效果
jQuery中$符号的实质
其实就是一个函数,以后用的时候,记得跟小括号 参数不同,功能就不同。3种用法: 参数是一个function, 入口函数 $(function () { }); $(domobj) 把dom对象转换成jquery对象 $(document).ready(function () { }); 参数是一个字符串,用来找对象 $("div") $("div ul") $(".current") 案例:检测$符号类型 <!DOCTYPE html> <html lang="zh-CN"> <h
兮动人
2021/06/11
3.8K0
jQuery中$符号的实质
Excel中$符号的妙用
Excel 使用过程中,不知道你有没有用到过 $ ,如果从来都没有用到过,可能代表你的修为还不够深,来看看为什么这么说。
披头
2019/12/26
2K0
php中的<?= ?>替换<?php echo ?>
首先修改PHP.ini文件. 如下: 1. 将short_open_tag = Off 改成On 开启以后可以使用PHP的短标签:<? ?> <?= 同时,只有开启这个才可以使用 <?= 以代替 <
全栈程序员站长
2021/12/23
3K0
php中的<?= ?>替换<?php echo ?>
Linux中符号的用法
用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。
头皮阴都都
2020/04/23
3.4K0
python中的@符号的作用
'@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。
py3study
2020/01/09
3.7K0
Python中的文本替换
对于习惯了Java中的replace,Python的replace用起来有些不适应,因为后者不支持直接使用正则表达式。要实现通过正则表达式的替换,可以配合Python的正则表达式模块使用。比如:
py3study
2020/01/10
4.7K0
JavaScript中的双符号运算
双波浪号 1 2 3 4 var i = 5.1; var j = 5.5; console.log(~~i); // 5 console.log(~~j); // 5 作用类似Math.floor。 类似的意思是在处理正数的时候,如果处理负数就它俩就不同了: 1 2 3 4 ~~-5.1 // 5 Math.floor(-5.1) // -6 ~~-5.5 // 5 Math.floor(-5.5) // -6 注: Math.ceil(x) Returns the smallest integer
前端黑板报
2018/01/29
1.4K0
shell脚本中$符号的意义
今天是远程办公的第4天,渐渐的找到了一点在家办公的节奏了,改了几个shell脚本,在改动过程中,发现还有一些知识点需要巩固,这里写出来,加深下印象。
AsiaYe
2020/02/17
4.4K0
shell脚本中$符号的意义
SAP中数值显示的问题
之前发现原来在输入框里面输入一串数值之后,系统会自动将数值变为分组形式的一串数字。比如输入123465798之后,系统自动转化为123.456.789。虽然这个并不影响实际运算,但看着很别扭!通过DDIC在用户里面设置了一下貌似也没啥用处。后来用新建的帐号登录,执行 su3 对一些信息进行修改,在登录信息里面数字格式改为:以句号作为小数点,以逗号分组。保存之后退出并重新启动GUI,搞定~
SAP梦心
2022/05/10
9200

相似问题

用数组中的符号替换数值

10

向量的SymPy替换符号

17

用向量替换符号变量

14

用数值替换Sympy索引符号

112

如何使用向量来替换链接的数值?

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文