微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我得到一个列表,每个列表都有一个元组如何获得一个包含多个元组的列表?

如何解决我得到一个列表,每个列表都有一个元组如何获得一个包含多个元组的列表?

我需要创建 1 个包含多个元组的列表。我只能使用 randint。

我有这个:

import random

first_names = ['chris','joe','billie','rose','nathatn']
names = []

counter = 0
for name in first_names:
    counter += 1
    names = [(counter,first_names[random.randint(0,len(first_names)-1)])  ] 
    print(names)

我得到这样的结果:

[(1,'chris')]
[(2,'nathatn')]
[(3,'billie')]
[(4,'joe')]
[(5,'chris')]

我想要完成的是这样的列表:

[(1,'chris'),(2,'nathan'),(3,'billie'),(4,'joe'),(5,'chris')]

我可以使用以下方法完成此格式:

names = [(first_names[random.randint(0,len(first_names)-1)],\
last_names[random.randint(0,len(last_names)-1)]) for name in range(0,len(first_names))]

但我不知道如何让计数器在列表理解中工作。当我添加 'counter' 作为元组的第一部分时,它只为每个元组提供 5。我需要 1、2、3、4、5。当我添加 'counter +=1' 作为元组的第一部分时,出现语法错误

我做错了什么?有人可以帮忙吗?

谢谢

解决方法

import random

first_names = ['chris','joe','billie','rose','nathatn']
names = []


for name in first_names:
    te=random.choice(first_names)
    names.append(te)
    print(names)
print(list(enumerate(names,1)))

你可以使用random.choice()

random.choice(seq):Return a random element from the non-empty sequence seq.

您可以使用 enumerate 自动生成您的 counter 变量

Output:
[(1,'rose'),(2,'joe'),(3,'billie'),(4,'nathatn'),(5,'joe')]

如果你需要一个列表中没有重复元素的列表,你可以使用 random.sample)

random.sample(population,k,*,counts=None)
Return a k length list of unique elements chosen from the population sequence or set. Used for random sampling without replacement.sample(['red','blue'],counts=[4,2],k=5) is equivalent to sample(['red','red','blue',k=5).

list(enumerate(random.sample(first_names,5)))
[(0,(1,'chris')]

如您所见,enumerate0 开头。但你可以改变它

list(enumerate(random.sample(first_names,5),1))
[(1,'chris')
,

你的列表理解完全没问题。问题是每次遍历 for 循环时都在替换名称列表。您需要使用 list.append() 功能和元组理解。此外,要获取包含所有元素的单个列表,您的打印语句应该在 for 循环之外。类似的东西:

import random

first_names = ['chris','nathatn']
names = []

counter = 0
for name in first_names:
    counter += 1
    t = (counter,first_names[random.randint(0,len(first_names)-1)]) 
    names.append(t)
print(names)

会给你你需要的东西。

,
import random
random.shuffle(first_names) # shuffle list first_names
list(enumerate(first_names,1)) # add index into the element

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?