社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

从Python中随机选择的两个列表元素创建列表

dev • 2 年前 • 1425 次点击  

我有一个元组列表,在这个元组中,我有两个列表。它看起来像下面这样:

value=[(['55', '56', '57', '58', '2'], ['59', '60', '61', '62', '2']), (['63', '64', '65', '66', '2'], ['51', '52', '53', '54', '2'])]

从每个元组的2个列表中,我想创建一个长度相同的列表(在上面的例子中,长度为5),我想为外部列表中的每个元组创建一个列表。例如,在上述示例中,第一个最终列表的第一个值将是55或59,最终列表的第二个值将是56或60,依此类推。

一个可能的结果是:

['59', '60', '57', '58', '2'] ['63', '52', '53', '66', '2']

我该怎么做?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131495
 
1425 次点击  
文章 [ 2 ]  |  最新文章 2 年前
Davide_sd
Reply   •   1 楼
Davide_sd    2 年前

里面的每个元组 values 包含两个列表。第一个列表的索引为0,第二个列表的索引为1。

我们可以使用 random.randint(0, 1) 生成一个二进制选择,0或1,这将是我们选择元素的列表的索引。

import random
res = [[v[random.randint(0, 1)][k] for k in range(len(v[0]))] for v in value]

让我们分解列表理解语法:

  • 首先,我们循环遍历包含在 value 具有 for v in value .
  • 然后 for k in range(len(v[0])) 我们循环计算每个元组的第一个列表的元素数(这里第一个或第二个并不重要,因为两个列表的元素数相同)。
  • 然后 v[random.randint(0, 1)][k] 我们随机选取第一个或第二个列表,并从该列表中提取第k个值。
BrokenBenchmark
Reply   •   2 楼
BrokenBenchmark    2 年前

你可以用 zip() 使用解包操作符获取子列表中每个位置的选项,然后使用列表理解对原始列表中的每个元组执行此操作。值得注意的是,如果每个元组中的列表数量可变,则解包的使用使此操作可扩展:

import random
[[random.choice(choices) for choices in zip(*item)] for item in value]

根据给定的数据,您将得到如下输出:

[['55', '60', '61', '62', '2'], ['51', '52', '65', '66', '2']]