簡體   English   中英

Python中所有可能組合的隨機化

[英]Randomizing in all possible combinations in Python

這是我的代碼:

if condition == '1':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '2':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '3':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")
elif condition == '4':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '5':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '6':
    a = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist1/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")
elif condition == '7':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '8':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")
elif condition == '9':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")
elif condition == '10':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '11':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '12':
    d = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '13':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '14':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '15':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '16':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    e = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '17':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    e = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '18':
    c = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    e = glob.glob("DDtest/targetimagelist4/*")
elif condition == '19':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '20':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist2/*")
    a = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")
elif condition == '21':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist4/*")
elif condition == '22':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    c = glob.glob("DDtest/targetimagelist2/*")
    d = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '23':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist4/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    c = glob.glob("DDtest/distractorimagelist3/*")
    a = glob.glob("DDtest/targetimagelist4/*")
elif condition == '24':
    e = glob.glob("DDtest/targetimagelist1/*")
    b = glob.glob("DDtest/distractorimagelist3/*")
    d = glob.glob("DDtest/targetimagelist2/*")
    a = glob.glob("DDtest/distractorimagelist3/*")
    c = glob.glob("DDtest/targetimagelist4/*")

基本上,這是基於a,c,d,e的所有組合從不同的列表中提取的,並使a和b對應。 該代碼可以正常工作,但不是很漂亮。 我想知道是否有人建議我用更少的代碼行做同樣的事情。 最重要的是,我只是想擴展我的代碼編寫知識,因此,如果您知道一種更雄辯的編寫方法,請告訴我。 :)

不確定“使a和b對應”是什么意思,但是也許可以:

from itertools import permutations
from random import choice

globs = [glob.glob("DDtest/targetimagelist1/*"),
         glob.glob("DDtest/distractorimagelist1/*"),
         glob.glob("DDtest/targetimagelist2/*"),
         glob.glob("DDtest/distractorimagelist3/*"),
         glob.glob("DDtest/targetimagelist4/*")]

glob_permutations = list(permutations(globs))

a, b, c, d, e = choice(glob_permutations)

內置的itertools庫具有用於排列而不重復的功能:

#!/usr/bin/env python2
import itertools
import glob

p = [
    glob.glob("DDtest/targetimagelist1/*"),
    glob.glob("DDtest/distractorimagelist4/*"),
    glob.glob("DDtest/targetimagelist2/*"),
    glob.glob("DDtest/distractorimagelist3/*"),
    glob.glob("DDtest/targetimagelist4/*"),
]

perm = itertools.permutations(p)

print(len(perm))

=> 120個排列

也許那樣嗎?

setup = {'1': ('1','1','2','3','4'),
         '2': ('1','1','2','3','4'),
        #...
        }
a = glob.glob("DDtest/targetimagelist" + setup[condition][0] + "/*")
b = glob.glob("DDtest/distractorimagelist" + setup[condition][1] + "/*")
c = glob.glob("DDtest/targetimagelist" + setup[condition][2] + "/*")
d = glob.glob("DDtest/distractorimagelist" + setup[condition][3] + "/*")
e = glob.glob("DDtest/targetimagelist" + setup[condition][4] + "/*")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM