루프에서 함수를 삽입 "오작동",파이썬 : 나는 다음과 같은 코드로 작성
이...
for x in range(len(coeff)): coeff[x].insert(0,names[x])
coeff.insert(0,['Center','c1','c2','c3'])
print_matrix(coeff)
...
print_matrix
기능은 단지 튜플 [[ROW1]에서 멋진 행렬을 출력을 [ROW2], [등 ...]]. 내 coeff = [[1,2,3],[4,5,6]]
및 내 names = ['A,'B']
.
내가 기능을 처음 실행할 때 내가 얻을 : 정확히 내가 원하는 것입니다
coeff = [['Center','c1','c2','c3'],['A',1,2,3],[B,4,5,6]]
+----------------------+
| Center c1 c2 c3 |
| A 1 2 3 |
| B 4 5 6 |
+----------------------+
합니다.
...
del x
for x in range(len(basis)): basis[x].insert(0,names[x])
basis.insert(0,['Center','A1','A2','A3'])
print_matrix(basis)
...
그때 얻을 :
basis = [['Center','A1','A2','A3'],['A','B',7,8,9],['A','B',10,11,12]]
및 오류가 나는 첫 번째는 비슷한 방식으로 다른 튜플 basis = [[7,8,9],[10,11,12]]
를 인쇄 할 직후 같은 (복사 및 붙여 넣기) 스크립트를 실행할 때 문제가 시작 같은 길이의 행을 가진 튜플을 얻지 못하기 때문에 print_matrix
함수에서 가져옵니다. 왜?
인덱스로 반복하지 마십시오. 느리고 읽기가 어렵고 유연성이 없습니다. (0, 이름 [x])'는 x의 경우 zip (coeff, names)의 이름이됩니다 : x.insert (0, name)''x의 범위 (len (coeff) . 또한 한 줄의 루프를 사용하지 않아야합니다. 코드를 읽기가 더 어렵게 만듭니다. 항상 앞면에 삽입하는 경우 ['collections.deque'] (http://docs.python.org/3.3/library/collections.html?highlight=deque#collections.deque) 및 'deque.appendleft()'와'list.insert()'도 사용합니다. –
@Lattyware 구문 수정을 이용해 주셔서 감사합니다. 지금은 훨씬 깨끗하지만 여전히 작동하지 않습니다. 결과는 내 루프 디자인과 정확히 동일합니다. 나는 지금 deque를 시도 할 것이다. – MarcinKonowalczyk
내가 제안한 것들도 프로그램의 기능을 바꿀 수 없으며, 단순히 자신이하는 일을하는 더 좋은 방법 일뿐입니다. –