일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 액션바 필요없숴
- cmd1
- 포너블
- java.lang.IllegalStateException
- kotlin
- 백준
- 페니빙
- col -1 from CursorWindow
- 6566
- 클라우드란?
- pwnable.kr
- Drive-By-Download
- 10814
- pwnable
- Docker
- pwable.kr
- cmd2
- 쏘큩
- UNIQUE constraint failed
- 클라우드가 뭐야
- Couldn't read row 0
- 코틀린
- 나이순 정렬
- 애너그램 그룹
- 블록체인
- python
- SQLiteConstraintException
- Make sure the Cursor is initialized correctly before accessing data for it.
- tlqkf
- 파이썬
- Today
- Total
푸르미르
[python]10814.나이순 정렬 본문
이 문제를 풀다가 알게된 새로운 사실이 있어서 글을 쓰게 되었다.
1
2
3
4
5
6
7
8
|
n=int(input())
member=[]
for i in range(n):
age, name=map(str, input().split())
member.append(tuple(int(age), name()))
member.sort(key=lambda x: x[0])
for age, name in member:
print(age, name)
|
cs |
회원의 나이와 이름을 tuple constructor로 묶어 member라는 리스트에 append했는데 오류가 났다.
TypeError: tuple expected at most 1 argument, got 2
tuple생성자는 1개의 argument를 받는데 2개를 받았다는 것이였다.
파이썬 document를 보아도 이렇게 나와있다.
그래서 위의 코드에서 member.append(tuple([int(age), name.lower()]))로 5번째 줄을 수정하였다.
1
2
3
4
5
6
7
8
9
|
n=int(input())
member=[]
for i in range(n):
age, name=map(str, input().split())
member.append(tuple([int(age), name.lower()]))
print(member)
member.sort(key=lambda x: x[0])
for age, name in member:
print(age, name)
|
cs |
오류가 해결되었다.
그리고 6번째 줄 sort하기 전의 member의 형태를 살펴보면,
이런형태이다. tuple의 argument에 []로 둘러쌓인 data 2개를 넣어줘도 리스트가 아닌 튜플 그대로로 생성되는 것을 알 수 있다.
또는 이런형태로 수정이 가능하다.
1
2
3
4
5
6
7
8
9
|
n=int(input())
member=[]
for i in range(n):
age, name=map(str, input().split())
member.append([int(age), name.lower()])
print(member)
member.sort(key=lambda x: x[0])
for age, name in member:
print(age, name)
|
cs |
member.append([int(age), name.lower()])
tuple의 constructor로 생성하는 것이 아니라, data가 2개인 리스트를 member라는 리스트에 append하는 것이다.
다시 살펴보자면
print(tuple(["가나다라"])) #가나다라 라는 문자열 1개가 튜플 원소 1개 =>('가나다라',)
print(tuple("가나다라")) #가나다라가 쪼개져서 각 원소로 존재 => ('가', '나', '다', '라')
print(list(["가나다라"])) #가나다라 라는 문자열 1개가 list 원소 1개 =>['가나다라']
print(list("가나다라")) #가나다라가 쪼개져서 각 list의 element로 존재 => ['가', '나', '다', '라']
'Baekjoon Online Judge' 카테고리의 다른 글
[python]7568. 덩치 (2) | 2021.04.29 |
---|---|
[python]1914.하노이 탑 (0) | 2021.02.11 |
[python]6566.애너그램 그룹 (0) | 2021.01.27 |
[python]9020.골드바흐의 추측 (2) | 2021.01.21 |
[python]4948.베르트랑 공준 (0) | 2021.01.21 |