python数组重复的最后一个值

2024-06-25 05:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个小脚本,以升序排列一组随机数。 所有内容都正确排序,但最后一个值(最大值)重复并抛出错误“ValueError:列表.删除(x) :x不在列表中。你知道吗

基本上,脚本的工作原理是,使用for循环,获取最小的值,删除它并将其添加到新数组中。继续这样做,一切都会好起来的。 我附上我的代码,任何帮助都非常感谢。很抱歉,我的婚礼取消了,我把它搞砸了。你知道吗

from random import randint
from random import sample
import random

global randomnum

def generateArray(size,lowerBound,upperBound):
    array = []
    array = random.sample(range(lowerBound,upperBound),size)
    return array

def sortArray(size,lowerBound,upperBound):
    useArray = generateArray(size,lowerBound,upperBound)
    print useArray
    arraysize = len(useArray)
    counter = 1
    minval = 0
    difsize = arraysize -1
    actualVal =0
    newArray =[]

    for i in range(0,arraysize+difsize):
        for n in range(0,arraysize-1):
            if useArray[minval] < useArray[counter]:
                counter = counter +1
                actualVal = useArray[minval]
            else:
                minval = counter
                actualVal = useArray[counter]
                counter = counter +1
        arraysize = arraysize -1
        counter =1
        minval =0
        # Adding this code fixed it
        if i + arraysize ==i:
            newArray.extend(useArray)   
            return newArray


        print actualVal
        #t = len(newArray)
        #print t
        newArray.append(actualVal)
        useArray.remove(actualVal)

   return newArray






print sortArray(10,1,30)

Tags: importforsizecounterrangerandomarrayprint
1条回答
网友
1楼 · 发布于 2024-06-25 05:27:45

一个实际的问题是,索引为arraysize+difsize的数组超过了数组大小,而且给定结果中有多个值的可能性很小,特别是如果大小很大,范围很小,remove将删除所有出现的值。你知道吗

为什么不使用内置设施的Python呢。 尝试:

import random

def generateArray(size,lowerBound,upperBound):
    """ Generate a random array as required """
    array = random.sample(range(lowerBound,upperBound),size)
    return array

def sortArray(size,lowerBound,upperBound):
    """ Generate a sorted random array """
    useArray = generateArray(size,lowerBound,upperBound)
    print useArray
    useArray.sort()
    print useArray
    return useArray

如果必须手动执行,请尝试气泡排序:

def sortArray(size,lowerBound,upperBound):
    """ Generate a sorted random array """
    useArray = generateArray(size,lowerBound,upperBound)
    print useArray
    changed = True:
    while changed:
         changed = False
         for n in xrange(size-1):
             if useArray[n] > useArry[n+1]:
                 useArray[n], useArry[n+1] = useArray[n+1], useArry[n]
                 changed = True
    return useArray

冒泡排序不是最快的排序,但它是最简单的排序之一,通常会比您当前的技术完成得更快,这将是相当缓慢的。你知道吗

相关问题 更多 >