如果满足某些条件,如何将某些项目从一个列表移到另一个列表?

时间:2018-11-28 13:25:06

标签: python python-3.x

我必须创建一个程序,该程序读取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,但为什么这样做不起作用?

4 个答案:

答案 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))