김두두의 블로그
파이썬-list안의 list 본문
파이썬을 그렇게 깊게 공부하지도 않았고 주로 R을 사용하다 보니 파이썬 list 안에 list가 들어간다는 사실을 까먹고 말았다...(보통 R에선 dataframe을 이용하니까)
>>> a=[[1,1,1],[1,0,0],[0,0,0]]
대충 a가 이렇게 생겼다고 해보자.
(내가 보던 케이스는 이 list 안의 list자체가 너무 커서 괄호가 안보여서 단일(이렇게 표현하는 지는 모르겠다!) list인 줄 알았다.
>>> print(type(a))
<class 'list'>
그래서 대체 왜 a가 list인데 자꾸
>>> a[1]
[1, 0, 0]
이런 식으로 나오는 지... 어이가 없었다. (코딩 하는 사람이면 내가 더 어이없을 듯)
그렇다고 첫번째 원소를 보고 싶어서 a[1,1] 치면
>>> a[1,1]
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
a[1,1]
TypeError: list indices must be integers or slices, not tuple
이렇게 오류나 나고 말이다.
하여튼 구글링을 통해 list안에 list가 들어갈 수 있다는 사실을 다시 알게 되었다. 알고 나니까 배웠던 거 같은 느낌이 든다. 분명히 배우긴 배웠는데...
이제 a의 첫번째 원소(말 그대로 첫번째)를 구해보자.
>>> a[1][1]
0
내가 원하던 그림이 아니다... 내가 원한 첫번째 원소는 a=[[1,1,1],[1,0,0],[0,0,0]]에서의 1이다!
>>> a[1][3]
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
a[1][3]
IndexError: list index out of range
이걸 보고 다시 알아차렸다 ^^ 아까 range할 때는 잘 생각났는데... 파이썬은 0부터 시작해 n-1까지 n개라는 걸.
>>> a[0][0]
1
우여곡절 끝에 내가 원하던 걸 구할 수 있게 되었다.
사실 책을 보면 이런건 간단하겠지만 요즘 책을 너무 보기 싫어서 하나하나 도전하는 느낌으로다가 공부하고 있다.
일본어도 그냥 아무 책이나 집어서 파파고 돌려서 많이 보이는 한자를 저절로 외우는 방법으로다가 하고있다... 요즘 너무 책을 보기 힘들다. (공부 서적만. 소설은 재밌다 ㅎㅎ)
*주의할 점
a=[[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,13):
for j in range(0,3):
if a[j][i]==1:
b[j][i]=0
else:
b[j][i]=1
이런식으로 (0,3)의 range를 가진 [j]를 먼저 써줘야 한다.
아니면 오류가 난다.
'it' 카테고리의 다른 글
R-What is boosting.cv? (0) | 2021.05.15 |
---|---|
R-adaboost 중 error: Error in `[.data.frame`(data, , as.character(formula[[2]])) (0) | 2021.05.15 |
R-bagging함수 (데이터프레임) (0) | 2021.05.15 |
HTML-sublime text 설치하고 간단히 만들어보기 (0) | 2021.05.15 |
파이썬-비트 반전하기 (0) | 2021.05.12 |