파이썬 이중리스트
조회수 3475회
현재 내가 만든 소스에도 전혀 안되고 제가 오늘 하루종일 머리굴려도 나오질 않네요..
import random
table1=[[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0]]
for i in range(0,10):
print("\n")
for j in range(0,10):
a=random.randrange(1,100)
table1[i][j]=a
for i in range(0,10):
print("\n")
for j in range(0,10):
a=random.randrange(1,100)
table1[i][j]=a
if i>=1 and j>=1:
for e in range(i,-1,-1):
for f in range(j,-1,-1):
if table1[i][j]==table1[e][f]:
a=random.randrange(1,100)
table1[i][j]=a
if e>=1:
for u in range(9,-1,-1):
if table1[e-1][u]==table1[i][j]:
a=random.randrange(1,100)
table1[i][j]=a
print(table1[i][j],end=" ")
이렇게도 짜봤지만 이중리스트에 중복된값이 나타나네요. 이제 어떻게 해야될지 전혀 모르겠습니다.
더 쉽고 간단한방법이나 고쳐야될점 알려주셨으면 좋겠습니다!
3 답변
-
import random numContainer = random.sample(range(100), 20) numContainer[:10] Out[32]: [23, 6, 26, 55, 60, 50, 85, 84, 0, 58] numContainer[10:] Out[33]: [7, 77, 81, 11, 35, 98, 62, 80, 71, 15]
위와같이 20개의 숫자를 만들고 10개씩 잘라 쓰는 형태로 하라는 의미입니다.
질문의 소스에서는 100개의 숫자가 필요한 모양이네요.
그러면
random.sample(range(100), 100)
같이 한번에 100개를 만들고 잘라서 사용하라는 의미입니다.
-
random 을 매번 사용하는 것이 아니라 한번의 사용으로 필요한 만큼 숫자를 만드세요.
import random random.sample(range(100), 10)
위와같이 하면 1~100까지 수중 10개의 중복되지 않은 숫자를 리스트로 리턴합니다.
그렇게 얻은 리스트에서 하나씩 숫자를 꺼내서 사용하면 됩니다.
-
b=random.sample(range(100),100)
for i in range(0,10): print("\n") for j in range(0,10): a=random.randrange(1,100) table1[i][j]=a for e in range(0,99): if table1[i][j]==b[e]: b.remove(b[e]) b.insert(e,0) else: a=random.randrange(1,100) print(table1[i][j],end=" ")이렇게 짜봐도 중복된수가 뜨네요...
댓글 입력