0

Here is my code:

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/*")

Basically what this does it is draws from a different list based on all combinations of a,c,d,e and makes a and b correspond. This code works fine, but it isn't very beautiful. I was wondering if anyone had any advice I do the same thing in fewer lines of code. More than anything I'm just trying to expand my knowledge of writing code, so if you know there is a more eloquent way of writing this let me know. :)

BoltClock
  • 700,868
  • 160
  • 1,392
  • 1,356
y3trgfhsfgr
  • 467
  • 8
  • 17

3 Answers3

2

Not sure what you meant by "make a and b correspond", but maybe this would work:

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)
1.618
  • 1,765
  • 16
  • 26
1

The built-in itertools library has a function for permutations without repetitions:

#!/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 permutations

wfr
  • 661
  • 5
  • 12
0

Maybe like that?

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] + "/*")
L3viathan
  • 26,748
  • 2
  • 58
  • 81
  • Seems like you're just moving the problem from one spot to another. – Simon Forsberg Mar 04 '15 at 20:00
  • Does it? It makes for much shorter code, and I don't see how you could avoid listing it alltogether. Either that or I'm not seeing the connection between the condition and the combination. – L3viathan Mar 04 '15 at 20:03
  • 1
    Yeah, I think there's a connection we're not seeing because the question is not entirely clear. – Simon Forsberg Mar 04 '15 at 20:06