我想将随机数从它们的列表更改为列表的最小含义

时间:2018-12-19 22:24:11

标签: python

我创建一个“ a”随机数列表。而且我需要将奇数更改为该列表的最小数量。但是它没有改变任何数字,怎么了?

import random

a = int(input('Num -> '))
s = []
for i in range(a):
    s.append(random.randint(0,10))
    if s[i]%2!=0:
        s[i]=min(s)

2 个答案:

答案 0 :(得分:1)

实际上,您的程序确实会根据您的要求更改数字。我添加了一些琐碎的print语句来对此进行跟踪:

随机导入

a = 10
s = []
for i in range(a):
    s.append(random.randint(0,10))
    if s[i]%2==0:
        print("Changing", i)
        print("\tbefore", s)
        s[i]=min(s)
        print("\t after", s)

输出:

Changing 1
    before [3, 10]
     after [3, 3]
Changing 6
    before [3, 3, 5, 9, 9, 1, 8]
     after [3, 3, 5, 9, 9, 1, 1]
Changing 7
    before [3, 3, 5, 9, 9, 1, 1, 6]
     after [3, 3, 5, 9, 9, 1, 1, 1]
Changing 8
    before [3, 3, 5, 9, 9, 1, 1, 1, 6]
     after [3, 3, 5, 9, 9, 1, 1, 1, 1]
Changing 9
    before [3, 3, 5, 9, 9, 1, 1, 1, 1, 0]
     after [3, 3, 5, 9, 9, 1, 1, 1, 1, 0]

如您所见,偶数 do 被替换为列表的最小值。您声称它不会更改任何数字是不正确的。

如果要更改奇数号,则需要将支票取反:

if s[i]%2 == 1:

答案 1 :(得分:0)

if s[i]%2==0更改为if s[i]%2!=0以选择奇数。第一种方法将更改偶数

import random

a = int(input('Num -> '))

# creates your list of x random numbers
s = []
for i in range(a):
    s.append(random.randint(0,10))


# change odd numbers to the min of the original list    
for i in range(a):    
    if s[i]%2!=0:
        s[i]=min(s)

因此,假设a为10:

>>> [2, 2, 8, 1, 2, 2, 10, 7, 5, 7]

现在将所有奇数更改为min(在本例中为'1')

>>> [2, 2, 8, 1, 2, 2, 10, 1, 1, 1]

以下答案也适用,这只是您是否需要在创建列表的每次迭代后进行更改,还是先创建列表,然后应用您的规则。