返回顶部
首页 > 资讯 > 精选 >如何有效地打乱 itertools.combinations() 生成的元组?
  • 494
分享到

如何有效地打乱 itertools.combinations() 生成的元组?

排列 2024-02-22 12:02:36 494人浏览 八月长安
摘要

问题内容 我正在使用 itertools.combinations() 基于非重复元素列表生成两项元组列表。然后我将生成的列表打乱。然而,元组本身的内容是按时间顺序组织的。例如,运行以

问题内容

我正在使用 itertools.combinations() 基于非重复元素列表生成两项元组列表。然后我将生成的列表打乱。然而,元组本身的内容是按时间顺序组织的。例如,运行以下代码:

import random
import itertools
items = ["a","b","c","d","e"]
item_combos = list(itertools.combinations(items, 2))
random.shuffle(item_combos)
print(item_combos)

输出:

['a', 'b', 'c', 'd', 'e']
[('b', 'd'), ('a', 'e'), ('b', 'c'), ('a', 'd'), ('a', 'b'), ('a', 'c'), ('c', 'e'), ('c', 'd'), ('b', 'e'), ('d', 'e')]

字符在元组中按它们出现在输入列表中的时间排序(不是按字母顺序排列,输入列表只是碰巧按字母顺序排序。打乱列表并不能解决问题,只是将其隐藏)。 “c”将始终出现在“d”的左侧,“a”将始终出现在其他所有内容的左侧。

我的解决方案是简单地将所有元组替换为打乱的元组(如下所示)。这可行,但事实证明速度非常慢,尤其是在较大的列表上。

for i in range(len(item_combos)):
    item_combos[i] = tuple(random.sample(item_combos[i], 2))

有没有一种更快的方法可以产生类似的输出?


正确答案


选择随机元组进行反转,而不是打乱每个元组,工作速度要快得多。这具有相同的结果,因为 item_combos 中的每个元组仅包含两项。

新元组“加扰”代码:

for i in range(len(item_combos)):
    if random.random()<.5:
        item_combos[i] = item_combos[i][::-1]

以上就是如何有效地打乱 itertools.combinations() 生成的元组?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何有效地打乱 itertools.combinations() 生成的元组?

本文链接: https://lsjlt.com/news/567176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何有效地打乱 itertools.combinations() 生成的元组?
    问题内容 我正在使用 itertools.combinations() 基于非重复元素列表生成两项元组列表。然后我将生成的列表打乱。然而,元组本身的内容是按时间顺序组织的。例如,运行以...
    99+
    2024-02-22
    排列
  • PHP数组打乱顺序时如何避免生成相邻重复元素?
    php shuffle() 可能会生成相邻重复元素。为了避免这种情况,可以使用以下两种方法:使用 a-hash 算法:为每个值生成哈希,仅保留唯一的哈希值对应的值。使用标记和洗牌:标记已...
    99+
    2024-05-02
    php 数组打乱
  • Python如何生成元组和字典
    本文小编为大家详细介绍“Python如何生成元组和字典”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何生成元组和字典”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.生成元组元组是元素按顺序组合后...
    99+
    2023-07-05
  • PHP数组打乱顺序对数组的效率有何影响?
    打乱 php 数组顺序会增加 o(n) 时间复杂度,但不会影响 o(n) 空间复杂度。使用 shuffle() 函数来打乱顺序,但请注意对性能的影响。 PHP 数组打乱顺序对数组效率的...
    99+
    2024-04-30
    效率 php数组
  • php如何打乱数组随机选取几个数组元素
    本篇内容主要讲解“php如何打乱数组随机选取几个数组元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何打乱数组随机选取几个数组元素”吧!方法:1、用shuffle()随机打乱数组;2、...
    99+
    2023-06-21
  • Java编程算法:如何有效地索引数组元素?
    在Java编程中,数组是一个常用的数据结构。它是由一组相同类型的元素组成的数据结构,每个元素可以通过索引来访问。在处理大量数据时,有效地索引数组元素对于程序的性能和效率至关重要。在本文中,我们将探讨如何使用Java编程算法来有效地索引数组...
    99+
    2023-11-12
    索引 数组 编程算法
  • 如何在PHP数组中有效地搜索特定元素
    在 php 数组中搜索特定元素的最有效方法包括:使用 in_array() 函数判断元素是否存在数组中。使用 array_search() 函数查找元素的键值。使用 array_key_...
    99+
    2024-04-30
    php 数组
  • PHP数组打乱顺序后如何找到特定元素?
    在打乱顺序的 php 数组中查找特定元素的方法有:遍历数组并比较元素。使用 array_search() 函数查找键。使用 in_array() 函数检查存在性。 如何在打乱顺序的 P...
    99+
    2024-05-04
    php 数组 排列
  • PHP数组打乱顺序后如何保证元素的唯一性?
    php中打乱数组顺序保证元素唯一性的方法有:使用array_unique()函数:先打乱顺序,再移除重复元素。使用array_diff()函数:求出两个数组的差集,移除与另一个数组相同的...
    99+
    2024-05-02
    php数组 唯一性 乱序
  • PHP7中的生成器:如何高效地处理大量数据和生成结果?
    PHP7中的生成器:如何高效地处理大量数据和生成结果?摘要:PHP是一种流行的服务器端编程语言,用于开发Web应用程序和处理数据。在处理大量数据和生成结果时,效率是一个重要的因素。PHP7引入了生成器的概念,通过生成器可以高效地处理大量数据...
    99+
    2023-10-22
    生成器 高效 大量数据
  • PHP数组打乱顺序后如何保证元素的相对位置?
    使用 shuffle 函数可打乱 php 数组顺序,同时保持元素相对位置不变。该函数对数组进行随机洗牌,元素之间位置关系不会改变。shuffle() 函数作用于数组,并随机打乱其顺序,但...
    99+
    2024-05-03
    相对位置
  • PHP数组打乱顺序后如何保留原始元素的索引?
    php shuffle() 函数可打乱数组元素顺序,但不会保留原始索引。可通过以下方法保留索引:1. 创建新数组并打乱元素;2. 使用 ksort() 函数对打乱后的数组进行排序。 P...
    99+
    2024-05-03
    数组打乱 索引保留
  • PHP7中的生成器:如何高效地处理大量数据?
    PHP7 中引入的生成器(Generator)是一种用于高效处理大量数据的强大工具。生成器不仅可以提升程序性能,而且可以减少内存消耗,使得处理大型数据集变得更加简单和高效。本文将介绍生成器的基本概念、用法和一些具体的代码示例。一、生成器的基...
    99+
    2023-10-22
    生成器 PHP 大量数据处理
  • Numpy中如何高效地索引和操作数组元素?
    Numpy是Python中最常用的科学计算库之一,它提供了高效的数组操作和数学函数。在数据分析和机器学习中,Numpy的使用非常广泛。本文将介绍如何高效地索引和操作Numpy数组的元素,包括基本的索引、切片、花式索引和布尔索引等。 1.基本...
    99+
    2023-06-14
    http numpy 索引
  • 如何在Java中高效地打包和同步数组?
    在Java中,数组是一种非常常见的数据结构,但是在一些情况下,我们需要将多个数组打包成一个数组,或者将一个数组拆分成多个小数组。此时,我们需要使用一些高效的方法来完成这些操作。本文将介绍如何在Java中高效地打包和同步数组。 一、打包数组...
    99+
    2023-06-06
    打包 数组 同步
  • python如何打印数组中的元素
    在Python中,可以使用for循环来打印数组中的元素。以下是一个示例: arr = [1, 2, 3, 4, 5] for el...
    99+
    2023-10-24
    python
  • hover生成border造成的元素移动如何解决
    hover生成border造成的元素移动如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言我们有时候会遇到 hover 伪类给元素添加边框的时候,元素中...
    99+
    2023-06-08
  • Python如何打印不带括号的元组
    这篇“Python如何打印不带括号的元组”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何打印不带括号的元组”文...
    99+
    2023-07-06
  • vue类名如何获取动态生成的元素
    目录类名获取动态生成的元素如何获取并操作dom元素类名获取动态生成的元素 首先注意的是,该元素必须在id为app这个元素里面  new Vue({    el: "#app",   ...
    99+
    2024-04-02
  • jQuery如何使用特定名字的元素对应的值生成一个数组
    这篇文章主要为大家展示了“jQuery如何使用特定名字的元素对应的值生成一个数组”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何使用特定名字的元素对应的值生成一个数组”这篇文章吧。...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作