2016-06-07 1 views
0

리스트 (정확한 행렬) 목록을 취하여 왼쪽 상단에서 오른쪽 하단의 대각선 수 아래 값을 0s으로 반환하는이 프로그램을 작성했습니다.목록 형식으로 목록으로 출력하는 방법은 무엇입니까?

[[2,6,8],[0,4,5],[0,0,4]] 
:

268 
045 
004 

는 I 출력은 입력과 같은리스트 형식 내에서 (보다 간단하고 더 추한)에 있어야 할 다음과 같이

def matrix(t): 

    s = len(t) 

    for i in range(s): 
     for j in range(s): 
      if j >= i: 
       print(t[i][j], end='') 
      else: 
      print(0, end='') 
     print() 

t = [[2,6,8],[9,4,5],[7,2,4]] 

전류 (청소) 출력은

나는 깨끗한 출력 & 원래의 목록을 인쇄 print(t) 시도했습니다. 말이된다.

나는 print(list(t))을 시도했다. 어느, 다시,

268[[2, 6, 8], [9, 4, 5], [7, 2, 4]] 
045[[2, 6, 8], [9, 4, 5], [7, 2, 4]] 
004[[2, 6, 8], [9, 4, 5], [7, 2, 4]] 

내가 print(list(t)[i][j], end='') 시도했다하지만 여전히 나에게 깨끗한 출력을했다. 무엇이든지, 나는 그것이 원래의 목록 (t)을 줄 것이기를 바랬다. 그리고 나는 그걸 가지고 놀 수 있었고 그것이 나를 이끌었던 곳을 볼 수 있었다. 그러나 그것은 결코 일어나지 않았습니다.

나는 새로운 m을 만들 필요가 있다는 것을 알고 있으며, 지금은 new이라고 부를 것이다. 하지만 1, 정말 새로운 변수를 만들 필요가 있습니까 new 그리고 더 나은 단어의 부족에 대한 그것의 "계산"을 제공합니까? 원래 코드에서 일부만 움직일 수는 없었습니까? 2, 만약 내가 new 변수를 만들었다면 어떻게 구현할 수 있습니까? 내가 제대로 이해한다면

+0

루프를'print (list (t))'로 교체하거나'print (list (t))'를 추가하려고 시도한 적이 있습니까? 후자는 당신이보고있는 것을 분명히 일으킬 것입니다. – starturtle

+0

메모리에 대해 너무 걱정하지 않는다면, t의 복사본을 만들어 루프에 수정 한 다음 복사본을 인쇄하십시오. – Maciek

+0

@TinyT 나는 그것을 시도했지만 행운이 없다. 나는 OP에서 그 블록을 그곳으로 가져 오게된다. – adhamncheese

답변

1

, 실제로 오히려 그들을 인쇄보다 t의 적절한 요소를 업데이트하기 만하면 모든 :

for i in range(s): 
    for j in range(s): 
     if j < i: 
      t[i][j] = 0 

이것은 당신이 t로 함수에 전달 된 개체를 업데이트합니다 그것을 바깥 범위에서 바꾼다. 그게 당신이 원하는 것이 아니라면, 당신은 목록의 깊은 복사본을 만들어 대신 그것을 사용해야합니다.

+0

업데이트 됨. 하지만 이제 프로그램을 실행하면 그 아래에 빈 공간이 생깁니다. 기본적으로 아무것도 얻지 못합니다. 따라서 루프에 어딘가에 수익이나 인쇄물이 있어야합니다. 그러나 인쇄 ("무엇?")가 정확하게 문제입니다. – adhamncheese

+0

@adhamncheese'print (t)'? – glibdud

+0

하지만 print()와 print()에 이어'if j adhamncheese

관련 문제