Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的数组索引开始随机_Python_Arrays - Fatal编程技术网

Python中的数组索引开始随机

Python中的数组索引开始随机,python,arrays,Python,Arrays,我需要访问数组中开始索引随机的项 我的代码 from random import randrange fruits = ['banana', 'apple', 'mango'] index = randrange(len(fruits)) for index in fruits[index:]: print index 当索引为1或2后,可以在该循环的索引0或1中再次开始打印 例如: Randon索引为1打印='苹果''芒果''香蕉' Randon索引是2 print='芒果'

我需要访问数组中开始索引随机的项

我的代码

from random import randrange

fruits = ['banana', 'apple',  'mango']

index = randrange(len(fruits))
for index in fruits[index:]:
     print index
当索引为1或2后,可以在该循环的索引0或1中再次开始打印

例如:

Randon索引为1打印='苹果''芒果''香蕉'

Randon索引是2 print='芒果''苹果''香蕉'

试试这个

from random import randrange

fruits = ['banana', 'apple',  'mango']
randomOffset = randrange(0,len(fruits))
for i in range(len(fruits)):       
   print fruits[i - randomOffset]
为了更清楚,可以使用
(i+randomOffset)%len(fruits)
的索引,但是在python中使用负索引是从数组的后面开始并向后计数的。因此,实际上,您只是从数组中的某个随机位置开始—由
randomOffset
设置,然后对所有后续项进行签名。

试试这个

from random import randrange

fruits = ['banana', 'apple',  'mango']
randomOffset = randrange(0,len(fruits))
for i in range(len(fruits)):       
   print fruits[i - randomOffset]

为了更清楚,可以使用
(i+randomOffset)%len(fruits)
的索引,但是在python中使用负索引是从数组的后面开始并向后计数的。因此,实际上,您只需在数组中的某个位置随机开始—由
randomOffset
设置,然后对所有后续项进行签名。

为此操作生成一个数据块:

您可以创建一个三角形并旋转它,而不是使用
水果[index:]

from collections import deque

fruit_deque = deque(fruits)
fruit_deque.rotate(-index)

for fruit in fruit_deque:
    print fruit
另一个选择是:


使用此方法,您可以通过将
len(fruits)
替换为任意数字(或使用
islice(fruit\u cycle,index,None)
无限循环)来进行多次循环。

为此操作生成一个deque:

您可以创建一个三角形并旋转它,而不是使用
水果[index:]

from collections import deque

fruit_deque = deque(fruits)
fruit_deque.rotate(-index)

for fruit in fruit_deque:
    print fruit
另一个选择是:


您可以使用此方法进行多次循环,方法是将
len(fruits)
替换为任意数字(或使用
islice(fruit\u cycle,index,None)
无限循环)。

看起来您只是试图以随机顺序访问列表(因为您的两个示例输出并非都是原始列表的循环)

那样的话,我可以建议您使用
random.shuffle

import random
randlist = fruits[:]
random.shuffle(randlist)
for i in randlist:
    print i

这将以随机顺序打印列表。

看起来您只是试图以随机顺序访问列表(因为您的两个示例输出并非都是原始列表的旋转)

那样的话,我可以建议您使用
random.shuffle

import random
randlist = fruits[:]
random.shuffle(randlist)
for i in randlist:
    print i

这将以随机顺序打印列表。

您可以避免for循环,并拼接到
索引
,然后反转大于
索引的元素

>>> fruits = ['banana', 'apple',  'mango']
>>> index = 0
>>> fruits[index:] + fruits[:index][::-1]
['banana', 'apple', 'mango']
>>> index = 1
>>> fruits[index:] + fruits[:index][::-1]
['apple', 'mango', 'banana']
>>> index = 2
>>> fruits[index:] + fruits[:index][::-1]
['mango', 'apple', 'banana']

您可以避免for循环,将其拼接到
索引
,然后反转大于
索引的元素

>>> fruits = ['banana', 'apple',  'mango']
>>> index = 0
>>> fruits[index:] + fruits[:index][::-1]
['banana', 'apple', 'mango']
>>> index = 1
>>> fruits[index:] + fruits[:index][::-1]
['apple', 'mango', 'banana']
>>> index = 2
>>> fruits[index:] + fruits[:index][::-1]
['mango', 'apple', 'banana']

首先,您正在重载单词
索引
,这会把您搞砸。其次,我认为应该能够使用
%
模运算符使其工作。首先,您正在重载单词
索引,这将使您陷入困境。第二,我认为,你应该能够使用
%
模运算符来实现这一点。负指数,我喜欢。@JohniDouglasMarangon如果你愿意,你可以检查它是否正确!负指数,我喜欢。@JohniDouglasMarangon如果你愿意,你可以检查它是否正确!第一个示例是旋转第一个示例是旋转