在Python中洗牌列表?

2024-09-24 10:22:11 发布

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

我是在一个基本的Python编程类,我被卡住了。我们必须使用列表的长度而不是a来生成适当范围内的索引值i和j 硬编码的数字,并确保列表元素只有在使列表更接近排序顺序(从左到左从低到高)时才被交换。你知道吗

到目前为止,我已经:

from random import*

def main():
    LENGTH= 25
    shuffleList= 1000
    numList= [0] * LENGTH

    for num in range(0,len(numList)):
        rand= randint(-100,100)
        numList[num] += rand
    print("List before shuffling:")
    print numList  

    for i in range(0, len(numList)):
        min = i
        shuffleList += 1

    for j in range(-1, len(numList)):
        shuffleList +=1

现在我不知道从现在开始该怎么办。谢谢。你知道吗


Tags: in元素编码列表forlen编程range
3条回答
import numpy
LENGTH=25
random_list = numpy.random.randint(-100,100,LENGTH) #Generate random list
for i in range(random_list): # for each index in list as i
    for j in range(random_list): # for each index in list as j
        if lrandom_listst[i] > random_list[j]: # if we should swap
           random_list[i],random_list[j] = random_list[j],random_list[i] # do swap

这不是一个很好的排序算法。。。也许这就是重点

这可能很有用:http://blog.codinghorror.com/shuffling/

或者像这样:(Pseodocode信用:Wikipdia)

for i from n−1 downto 1 do
 j ← random integer such that 0 ≤ j ≤ i
 exchange a[j] and a[i]

https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

相关问题 更多 >