Python-在随机数组中向左或向右移动每个对象的位置

时间:2014-11-18 17:36:22

标签: python arrays random shift

我不久前学会了如何移动数组中的对象,通常是数字。 现在我将它附加到我的代码片段中,该代码片段应该在数组或列表中生成随机对象。

问题:如何修改第二部分,以便我可以使用第一部分?

这是编程中最令人困惑的部分。我知道这是一个愚蠢的问题,但我还在学习,我不是很好,但我真的想变得更好。

def randomArray(n_Elementi, my_vector):
    for i in range(0, n_Elementi):
        newElement=random.randint(1,500)
        my_Vector.append(newElement)

return 

def shift(seq, n):
    newElement = []
    for i in range(len(seq)):
    newElement.append(seq[(i-n) % len(seq)])
return newElement

randomArray(n_Elementi, my_vector)
shift (newElement)

1 个答案:

答案 0 :(得分:0)

有一些缩进问题,资本不匹配,但整体上你的代码有效:

import random
def randomArray(n_Elementi, my_Vector):
    for i in range(0, n_Elementi):
        newElement=random.randint(1,500)
        my_Vector.append(newElement)
    return 

def shift(seq, n):
    newElement = []
    for i in range(len(seq)):
        newElement.append(seq[(i-n) % len(seq)])
    return newElement

n_Elementi = 10
my_vector=[]
randomArray(n_Elementi, my_vector)
print my_vector
print shift (my_vector, 3)
但是,这可以大大简化。这是一种使用numpy的方法(Numeric Python,它就像python的MAtlab)

import random
import numpy as np

#rand creates array between 0,1. multiple by 500 and recast to int to get the range you want
def randomArray(n_Elementi):    
    return np.array(np.random.rand(n_Elementi)*500,dtype=int) 

#seq[-n:] takes the elements n from the end to the end [-n:]. This is called splicing. similarly [:-n] ...
def npshift(seq, n):
    return np.concatenate((seq[-n:], seq[:-n]))

n_Elementi = 10
my_vector=randomArray(n_Elementi)
print my_vector
print shift (my_vector, 3)