我必须创建一个程序,该程序读取20个整数的列表“ vet”。该程序必须基于该列表生成另一个列表“ pos” 仅包含“兽医”的正值。从列表“ pos”中,仅包含另一个列表“ nodup” 必须生成“ pos”中每个值的一次出现。
from random import randint
vet = []
pos = []
for i in range (0,20):
vet.append(randint(-10,10))
print (vet)
for i in pos:
if vet > 0:
vet.append(pos)
pos=pos+1
print(pos)
我真的无法超越那部分,因为当我打印pos时,它显示为列表为空。本来应该将正值从vet添加到pos,但为什么这样做不起作用?
答案 0 :(得分:1)
您可以通过简单的列表理解找到肯定的元素,然后使用set()
从该列表中删除重复项。
from random import randint
vet = []
for i in range(20):
vet.append(randint(-10,10))
pos = [i for i in vet if i > 0]
nodup = list(set(pos))
print(pos)
print(nodup)
输出:
[8, 2, 5, 3, 9, 7, 5, 3, 1]
[1, 2, 3, 5, 7, 8, 9]
答案 1 :(得分:0)
在这里,您要将循环中的一个空列表追加到一个空列表中,因此结果又是一个空列表。
为什么不为此使用numpy
?
import numpy as np
vet = np.random.randint(-10,10)
pos = vet[vet > 0]
答案 2 :(得分:0)
您的第二个循环应该是这样-
for i in vet:
if i > 0:
pos.append(i)
或使用列表理解-
pos = [i for i in vet if i > 0]
答案 3 :(得分:0)
此代码将返回一个随机列表vet,一个仅在vet中为正数的列表pos和一个仅包含pos中每个元素之一的列表nodup。
from random import randint
vet = []
pos = []
for i in range (0,20):
vet.append(randint(-10,10))
print (vet)
for el in vet:
if el> 0:
pos.append(el)
nodup = list(set(pos))