2016-04-10 11 views
-1

異なる値を持つ2つの異なるリストを作成して、値が同じでないようにしようとしています。何度も試して失敗した後、私は助けを求めていました。異なる値のリストを作るPython 3.4.3

現在のところ、これは各リストを生成するために使用するコードであり、それぞれの値はそれぞれ異なる値を使用しています。私は傍受している値を変更して、それらがもはや傍受されないようにしたいと思います。私は、リストのどれもが "player"の価値を含んでいないことを望んでいます。事前のおかげで

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

は単にitem2list1に既に存在するかどうかを確認し、それがある場合はそれを無視します。 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

ランダムに二つの配列(両方のリストに)を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) 
関連する問題