Как я могу записать каждую строку этой функции печати Python в список строк? - PullRequest
1 голос
/ 24 августа 2011

у меня есть ...

>>> for i in range(11):
...     for j in range(103):
...             print "./", '%02d' % i, "/IMG", '%04d' % j, ".jpg"
...
>>> (prints a whole bunch of lines representing files in a group of directories)

... и вместо этого я хочу объединить маленькие строки и целые числа в этих строках в одну строку и добавить его в список, который будет содержать приблизительно 1100 элементов, каждый из которых является именем файла. Как я могу изменить цикл?

Ответы [ 3 ]

4 голосов
/ 24 августа 2011

ITYM

l = []
for i in range(11):
    for j in range(103):
        l.append()

или, короче,

l = ['./%02d/IMG%04d.jpg' % (i, j) for i in range(11) for j in range(103)]
3 голосов
/ 24 августа 2011
from itertools import product
['./%02d/IMG%04d.jpg'%item for item in product(range(11),range(103))]

или немного (~ 6%) быстрее, но более запутанно

 map('./%02d/IMG%04d.jpg'.__mod__, product(range(11),range(103)))

$ python -m timeit -s"from itertools import product" "['./%02d/IMG%04d.jpg'%item for item in product(range(11),range(103))]"
1000 loops, best of 3: 1.56 msec per loop

$ python -m timeit -s"from itertools import product" "map('./%02d/IMG%04d.jpg'.__mod__, product(range(11),range(103)))"
1000 loops, best of 3: 1.46 msec per loop

3 голосов
/ 24 августа 2011
['./%02d/IMG%04d.jpg' % (i, j) for i in range(11) for j in xrange(103)]
...