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如果你愿意,你可以检查它是否正确!第一个示例是旋转第一个示例是旋转