记一个itertools排列组合和列表随机排序的例子

朋友不知道哪里弄来了一长串单词列表,一定要搞个单词不重复的组合。那么这个时候我们就可以想到读书时所学的排列组合知识了,而这个在Python中可以怎么实现呢?我记录如下:

使用itertools模块实现排列组合

在 Python 中,排列组合可以通过 itertools 模块来实现。以下是两个主要函数的介绍和使用示例:

  • itertools.permutations(iterable[, r]):返回输入可迭代对象中元素的所有可能排列。r 是排列的长度,默认为可迭代对象的长度。
  • itertools.combinations(iterable, r):返回输入可迭代对象中元素的所有可能组合。r 是组合的长度。

示例代码

import itertools

# 示例列表
elements = [1, 2, 3]

# 获取所有排列
permutations = list(itertools.permutations(elements))
print("排列:", permutations)

# 获取所有组合,组合长度为2
combinations = list(itertools.combinations(elements, 2))
print("组合:", combinations)

输出

排列: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
组合: [(1, 2), (1, 3), (2, 3)]

通过这两个函数,我们可以方便地生成排列和组合,适用于需要穷举所有可能性的场景。

列出文档中各不同单词的组合并随机乱序

读取文本中单词

将文本中的单词读入到列表中,后续按要求划分。

import itertools

# 读取文本中的单词,并存储到列表中
def read_words_from_file(file_path):
    words = []
    with open(file_path, 'r') as file:
        for line in file:
            words.extend(line.strip().split())
    return words

# 获取单词列表
words = read_words_from_file('words.txt')

获取组合

以组合长度2为例,我们可以这样获取单词的组合:

# 获取所有组合,组合长度为2
combinations = list(itertools.combinations(words, 2))
print("组合:", combinations)

组合结果输出

列表数据随机排序

要对 Python 列表进行随机排序,可以使用 random 模块中的 shuffle 函数。
注:random.shuffle 函数会直接修改原列表,因此不需要返回值。每次运行这段代码时,列表的顺序都会随机变化。

import random
import copy

# 深复制combinations列表,避免影响原来的排序
list_for_shuffle = copy.deepcopy(combinations)

# 使用 shuffle 函数随机排序列表
random.shuffle(list_for_shuffle)

# 输出随机排序后的列表
print(list_for_shuffle)

# 输出原列表
print(combinations)

# 将list_for_shuffle写入到shuffle.txt文件
with open('shuffle.txt', 'w') as f:
    for item in list_for_shuffle:
        f.write("%s\n" % str(item))

乱序后的列表和原列表
文件截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0入门自主空中机器人-4-【PX4与Gazebo入门】

前言: 从上一篇的文章 从0入门自主空中机器人-3-【环境与常用软件安装】 | MGodmonkeyの世界 中我们的机载电脑已经安装了系统和常用的软件,这一篇文章中我们入门一下无人机常用的开源飞控PX4,以及ROS中无人机的仿真 1. PX4的安装 1.1 PX4固件代码的下载…

搭建vue项目

一、环境准备 1、安装node node官网:https://nodejs.org/zh-cn 1.1、打开官网,选择“下载”。 1.2、选择版本号,选择系统,根据需要自行选择,上面是命令安装方式,下载是下载安装包。 1.3、检查node安装…

深度学习笔记(5)——目标检测和图像分割

目标检测与图像分割 语义分割:如果没有语义信息,很难正确分类每个像素 解决方案:感知像素周围的语义,帮助正确分类像素 滑窗计算:计算非常低效,图像块的重叠部分会被重复计算很多次 解决方案:转向全卷积 全卷积问题:分类模型会大幅降低特征的分辨率,难以满足分割所需的高分辨…

go语言的成神之路-筑基篇-gin常用功能

第一节-gin参数绑定 目录 第一节-?gin参数绑定 ShouldBind简要概述 功能: 使用场景: 可能的错误: 实例代码 效果展示 第二节-gin文件上传 选择要上传的文件 选择要上传的文件。 效果展示? 代码部分 第三节-gin请求重定向 第…

【Leecode】Leecode刷题之路第93天之复原IP地址

题目出处 93-复原IP地址-题目描述 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 93-复原IP地址-官方解法 方法1:回溯 思路: 代码示例:(Java&…

【新方法】通过清华镜像源加速 PyTorch GPU 2.5安装及 CUDA 版本选择指南

下面详细介绍所提到的两条命令,它们的作用及如何在你的 Python 环境中加速 PyTorch 等库的安装。 1. 设置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令的作用是将 pip (Python 的包管理工具&#xf…

CES Asia 2025的低空经济展区有哪些亮点?

CES Asia 2025(赛逸展)的低空经济展区有以下亮点: • 前沿科技产品展示: 多款新型无人机将亮相,如固定翼无人机和系留无人机的最新型号,其在监测、救援和货物运输等方面功能强大。此外,还有可能…

python数据分析之爬虫基础:selenium详细讲解

目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…

Python学生管理系统(MySQL)

上篇文章介绍的Python学生管理系统GUI有不少同学觉得不错来找博主要源码,也有同学提到老师要增加数据库管理数据的功能,本篇文章就来介绍下python操作数据库,同时也对上次分享的学生管理系统进行了改进了,增加了数据库&#xff0c…

二,Python常用库(共16个)

二,常用库(共15个 二,Python常用库(共15个)1,os模块2,json模块2.1 猴子补丁S 3,random模块4,string模块5,异常处理5.1 错误类型5.1 逻辑错误两种处理方式5.1.1 错误时可以预知的5.1.2 错误时不可…

Linux第99步_Linux之点亮LCD

主要学习如何在Linux开发板点亮屏,以及modetest命令的实现。 很多人踩坑,我也是一样。关键是踩坑后还是实现不了,这样的人确实很多,从群里可以知道。也许其他人没有遇到这个问题,我想是他运气好。 1、修改设备树 1)、…

解密MQTT协议:从QOS到消息传递的全方位解析

1、QoS介绍 1.1、QoS简介 使用MQTT协议的设备大部分都是运行在网络受限的环境下,而只依靠底层的TCP传输协议,并不 能完全保证消息的可靠到达。 MQTT提供了QoS机制,其核心是设计了多种消息交互机制来提供不同的服务质量,来满足…

网络安全 | 5G网络安全:未来无线通信的风险与对策

网络安全 | 5G网络安全:未来无线通信的风险与对策 一、前言二、5G 网络的技术特点2.1 超高速率与低延迟2.2 大容量连接与网络切片 三、5G 网络面临的安全风险3.1 网络架构安全风险3.2 设备终端安全风险3.3 应用场景安全风险3.4 用户隐私安全风险 四、5G 网络安全对策…

MyBatis知识点笔记

目录 mybatis mapper-locations的作用? mybatis configuration log-impl 作用? resultType和resultMap的区别? 参数 useGeneratedKeys ,keyColumn,keyProperty作用和用法 取值方式#和$区别 动态标签有哪些 MyBat…

Midjourney技术浅析(二):文本预处理过程

Midjourney 的用户通过输入文本描述(Prompts)来生成高质量的图像。为了将用户输入的文本转化为机器可理解的格式,并提取其中的语义信息,Midjourney 依赖于强大的自然语言处理(NLP)预处理技术。 一、NLP 预…

考研互学互助系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…

ASP.NET Core Web API Hangfire

ASP.NET Core Web API Hangfire 前言一、安装二、相关代码1.代码片段2.代码片段3.运行效果 三、测试代码1.即发即弃作业2.延迟作业3.重复作业4.延续作业5.页面调度作业 前言 👨‍💻👨‍🌾📝记录学习成果,以…

【Artificial Intelligence篇】AI 前沿探秘:开启智能学习的超维征程

目录 一、人工智能的蓬勃发展与智能学习的重要性: 二、数据的表示与处理 —— 智能学习的基石: 三、构建一个简单的感知机模型 —— 智能学习的初步探索: 四、神经网络 —— 开启超维征程的关键一步: 五、超维挑战与优化 —— 探索智能学习的深度: 六、可视化与交互 —— …

springboot502基于WEB的牙科诊所管理系统(论文+源码)_kaic

牙科诊所管理系统的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定牙科诊所管理系统的…

内置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的带有ALC(自动电平控制)的前置音频放大器芯片,最初产品为单声道/立体声收录机及盒式录音机而开发,作为录音/回放的磁头放大器使用;由于产品的高增益、低噪声及ALC外部可调的特性&…