在python中以相同的顺序随机播放两个列表

y3t*_*fgr 2 python shuffle psychopy

我有一个关于改组的问题,但首先,这是我的代码:

from psychopy import visual, event, gui
import random, os
from random import shuffle
from PIL import Image
import glob
a = glob.glob("DDtest/targetimagelist1/*")
b = glob.glob("DDtest/distractorimagelist1/*")
target = a
distractor = b
pos1 = [-.05,-.05]
pos2 = [.05, .05]

shuffle(a)
shuffle(b)

def loop_function_bro():
    win = visual.Window(size=(1280, 800), fullscr=True, screen=0, monitor='testMonitor', color=[-1,-1,-1], colorSpace='rgb')
        distractorstim = visual.ImageStim(win=win,
        image= distractor[i], mask=None,
        ori=0, pos=pos1, size=[0.5,0.5],
        color=[1,1,1], colorSpace='rgb', opacity=1,
        flipHoriz=False, flipVert=False,
        texRes=128, interpolate=True, depth=-1.0)

    targetstim= visual.ImageStim(win=win,
        image= target[i], mask=None,
        ori=0, pos=pos2, size=[0.5,0.5],
        color=[1,1,1], colorSpace='rgb', opacity=1,
        flipHoriz=False, flipVert=False,
        texRes=128, interpolate=True, depth=-2.0)

    distractorstim.setAutoDraw(True)
    targetstim.setAutoDraw(True)
    win.flip()
    event.waitKeys(keyList = ['space'])

for i in range (2):  
    loop_function_bro()
Run Code Online (Sandbox Code Playgroud)

此代码随机地移动一堆图像并显示它们.但是,我希望它以相同的顺序对图像进行洗牌,以便两个列表以相同的随机顺序显示.有办法做到这一点吗?

干杯,:)

小智 6

我能想到的来处理这个最简单的方法是使用索引的单独列表,随机播放它来代替.

indices = list(xrange(len(a)))  # Or just range(len(a)) in Python 2
shuffle(indices)
Run Code Online (Sandbox Code Playgroud)