2016-04-10 2 views
-1

Я пытаюсь сделать два разных списка с разными значениями друг с другом, так что ни одно из значений не будет одинаковым. Пробыв много раз и провалившись, я хотел попросить о помощи.Создание списков с разными значениями Python 3.4.3

В настоящее время это код, который я использую для создания каждого списка, с разными значениями внутри себя. Я хотел бы, чтобы любые перехватывающие значения менялись, чтобы они больше не перехватывали. Я также хотел бы, чтобы ни один из списков не содержал значение «игрока». Заранее спасибо

list1= set() 
list2= set() 
player = 0,0 

while len(list1) != 6: 
    item1 = (random.randint(0,5),random.randint(0,5)) 
    list1.add(item1) 
while len(list2) != 6: 
    item2 = (random.randint(0,5),random.randint(0,5)) 
    list2.add(item2) 

ответ

1

Просто проверить, если item2 уже в list1, и игнорировать его, если он есть. Проверьте, равен ли itemxplayer и игнорирует его, если это так.

import random 

list1 = set() 
list2 = set() 
player = 0, 0 

while len(list1) != 6: 
    item1 = (random.randint(0, 5), random.randint(0, 5)) 
    if item1 == player: 
     continue 

    list1.add(item1) 

while len(list2) != 6: 
    item2 = (random.randint(0, 5), random.randint(0, 5)) 
    if (item2 == player) or (item2 in list1): 
     continue 

    list2.add(item2) 

print list1 
print list2 
+0

Спасибо, это было намного проще, чем ожидалось – Test1234

2

Предполагая, что ни один элемент должен появиться дважды (в обоих списках) и предполагая, что количество элементов мало, генерировать все перестановки и выбрать случайным образом две последовательности:

from itertools import product 
from random import shuffle 

player = (0, 0) 

# Generate all possible pairs or [0-5]x[0-5] 
values = [pair for pair in product(range(5), repeat=2)) if pair != player] 

# Randomize the order to the pairs 
shuffle(values) 

# Take the first six to the first list 
list1 = values[:6] 
# Take the next six to the second list 
list2 = values[6:12] 
+0

Учитывает ли это решение, что значение 'player' не должно быть в списках? – dm295

+2

К сожалению, вы в порядке. Исправлена. Благодаря! – Elisha

0

Я хотел бы использовать, если петля

import random 

list1 = set() 
list2 = set() 
player = 0, 0 

while len(list1) != 6: 
    item1 = (random.randint(0, 5), random.randint(0, 5))   // setup list1 first 
    list1.add(item1) 

while len(list2) != 6: 
    item2 = (random.randint(0, 5), random.randint(0, 5))   // setup list2 
    if item2 not in list1:          // checks if value item2 not in list1. If not, adds item2 to list2 
     list2.add(item2) 
0

, если вы хотите, чтобы проверить против обоих списках:

import random 

list1 = set() 
list2 = set() 
player = (0, 0) 

while len(list1) != 6: 
    item1 = (random.randint(0, 5), random.randint(0, 5)) 
    item2 = (random.randint(0, 5), random.randint(0, 5)) 
    if item1 != player and item1 not in list1 and item1 not in list2 and item2 != player and item2 not in list1 and item2 not in list2: 
     list1.add(item1) 
     list2.add(item2) 

print(list1) 
print(list2) 
Смежные вопросы