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



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

问题:如何修改第二部分,使其与第一部分一起使用?

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

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)

有一些缩进问题,大写不匹配,但总的来说,你的代码是有效的:

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)

最新更新