2012-03-29 3 views
3

У меня есть список итерация в питоне, определенной как это:список питон итерация

for i in range(5): 
    for j in range(5): 
     if i != j: 
      print i , j 

Таким образом, для каждого элемента в моем определенном диапазоне [0..5] Я хочу, чтобы каждый элемент я, но и все другие элементы, которые не являются i.

Этот код делает то, что я ожидаю, но есть ли более чистый способ сделать это?

+0

Вы можете использовать диапазон() только один раз перед двумя циклами в качестве оптимизации первого уровня. – DhruvPathak

+0

С точки зрения эффективности это вполне исправное, если вы не вызываете его в узком цикле или значительно увеличиваете «5», я бы не стал беспокоиться. С точки зрения удобочитаемости это прекрасно читаемо. – MattH

ответ

10

Использование itertools.permutations:

import itertools as it 
for i, j in it.permutations(range(5), 2): 
    print i, j 
+1

Однако код OP очень легко понять, не требуя от читателя знать itertools; itertools светит, когда вам нужно масштабировать их до большего размера или нужно больше одного раза. –

2

[(х, у) х в диапазоне (5) для г в диапазоне (5), если х = у]

+1

Просьба предоставить дополнительную информацию в своих ответах. Рекомендуется некоторая предыстория или пояснения для потомков. – Gray