Как сгенерировать эти списки True и False?

#python #python-3.x #list #list-comprehension

#python #python-3.x #Список #понимание списка

Вопрос:

Я просматриваю список из 3 элементов, что-то вроде:

 for i in range(3):
  

и пытается создать следующие списки на каждой соответствующей итерации:

 [True, True, False, False, False, False]
[False, False, True, True, False, False]
[False, False, False, False, True, True]
  

Какой был бы хороший способ в python сделать это?

Комментарии:

1. «наиболее эффективный» не является четко определенной концепцией.

2. отметил, отредактировал вопрос и текст

Ответ №1:

Вот один из способов:

 >>> for i in range(3):
...     print([(x // 2) == i for x in range(6)])
...
[True, True, False, False, False, False]
[False, False, True, True, False, False]
[False, False, False, False, True, True]
  

Ответ №2:

Попробуйте так:

 k = 0
for i in range(3):
  # Other tasks
  myList = [False for x in range(4)]
  myList[k:k] = [True,True]
  print(myList)
  k  = 2
  

Комментарии:

1. Проще: for k in range(0, 6, 2)

2. Но @wjandrea я думаю, что OP специально хочет сгенерировать их внутри range(3) цикла

3. @Wasif уверен, но i не используется, так что это бессмысленно. В качестве альтернативы вы могли бы сделать k = i*2 внутри цикла.

Ответ №3:

 L = [False, False, False, False, True, True]

for _ in range(3):
    L = L[-2:]   L[:4]
    print(L)