- 리스트 연결
extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다.
'홍길동' '박찬호' '이용규' extend() '강호동' '박승철' '김지은'
List 1 ↓ List 2
리스트 연결
'홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은'
'+ 기호로도 연결 가능!
'홍길동' '박찬호' '이용규' + '강호동' '박승철' '김지은'
a b
'+ 사용하는 경우 리스트 a,b를 합친 c가 만들어진다
group1 = ['홍길동', '박찬호', '이용규']
group2 = ['강호동', '박승철', '김지은']
print('group1 : {}'.format(group1))
print('group2 : {}'.format(group2))
group1.extend(group2)
print('group1 : {}'.format(group1)) # group1이 group2와 합쳐져 확장된다!
print('group2 : {}'.format(group2))
result = group1 + group2
print('result : {}'.format(result)) # group1과 2의 크기는 변하지 않는다!
print('group1 : {}'.format(group1))
print('group2 : {}'.format(group2))
- 실습
나와 친구가 좋아하는 번호를 합치되 번호가 중복되지 않게 하는 프로그램을 만들자.
나 1 3 5 6 7
친구 2 3 5 8 10
myFavoriteNumbers = [1, 3, 5, 6, 7]
friendFavoriteNumbers = [2, 3, 5, 8, 10]
print('myFavoriteNumbers : {}'.format(myFavoriteNumbers))
print('friendFavoriteNumbers : {}'.format(friendFavoriteNumbers))
addList = myFavoriteNumbers + friendFavoriteNumbers
print('addList : {}'.format(addList))
result = []
for number in addList:
if number not in result:
result.append(number) # 중복이 없는 데이터만 새로운 리스트 result에 입력!
print('result : {}'.format(result))
- 리스트 연결(확장)
sort() 함수를 이용하면 아이템을 정렬할 수 있다.
'홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은'
↓
내림차순 정렬 ← sort(reverse = True)
오름차순 정렬 ← sort()
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students.sort()
print('students : {}'.format(students))
students.sort(reverse = True)
print('students : {}'.format(students))
students.sort(reverse = False)
print('students : {}'.format(students))
- 숫자도 정렬이 가능하다
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers : {}'.format(numbers))
numbers.sort(reverse = True)
numbers.sort(reverse = False)
print('numbers : {}'.format(numbers))
- 실습
아래 점수표에서 최저 및 최고 점수를 삭제한 후 총점과 평균을 출력해 보자.
점수1 점수2 점수3 점수4 점수5 점수6
9.5 8.9 9.2 9.8 8.8 9.0
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScore : {}'.format(playerScore))
playerScore.sort() # 정렬을 통해 최저, 최고 점수를 구할 수 있다!
print('playerScore : {}'.format(playerScore))
# 정렬을 했으니 pop로 최저, 최고 삭제!
playerScore.pop(0) # 최저 점수 삭제!
playerScore.pop(len(playerScore) -1) # 최고 점수 삭제!
print('playerScore : {}'.format(playerScore))
sum = 0
avg = 0
for score in playerScore:
sum += score
avg = sum / len(playerScore)
print('sum : {}'.format(sum))
print('avg : {}'.format(avg))
- 리스트 아이템 순서 뒤집기
reverse() 함수를 이용하면 아이템 순서를 뒤집을 수 있다.
'홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은'
↓
reverse()
↓
'김지은' '박승철' '강호동' '이용규' '박찬호' '홍길동'
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
students.reverse() # 순서 뒤집기!
print('students : {}'.format(students))
- 숫자도 뒤집기가 가능하다!
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers : {}'.format(numbers))
numbers.reverse()
print('numbers : {}'.format(numbers))
- 실습
다음은 전쟁에서 사용되는 암호이다. 암호를 해독하는 프로그램을 만들어보자.
암호 '27156231'
해독 '13326125157214'
secret = '27156231'
secretList = []
solvedList = ''
for cha in secret:
secretList.append(int(cha)) # 암호를 일단 int형으로 변경!
secretList.reverse()
print(secretList)
val = secretList[0] * secretList[1]
secretList.insert(2, val)
val = secretList[3] * secretList[4]
secretList.insert(5, val)
val = secretList[6] * secretList[7]
secretList.insert(8, val)
val = secretList[9] * secretList[10]
secretList.insert(11, val)
print('secretList : {}'.format(secretList))
- 리스트 슬라이싱
[n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
'홍길동' '박찬호' '이용규' '강호동' '박승철' '김지은'
↓
슬라이싱 ← [2:4]
↓
2 <= n < 4
↓
'이용규' '강호동'
앞의 숫자는 포함 뒤에 숫자는 그 앞까지!
- 문자 슬라이싱 해보기!
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
print('students : {}'.format(students[2:4]))
print('students : {}'.format(students[:4])) # 앞에 숫자를 생략하면 0부터
print('students : {}'.format(students[2:])) # 뒤에 숫자를 생략하면 끝까지
print('students : {}'.format(students[2:-2])) # -값을 넣으면 뒤쪽부터
print('students : {}'.format(students[-5:-2])) # -값을 넣으면 뒤쪽부터
- 숫자 슬라이싱 해보기!
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers : {}'.format(numbers))
print('numbers : {}'.format(numbers[2:4]))
print('numbers : {}'.format(numbers[:4])) # 앞에 숫자를 생략하면 0부터
print('numbers : {}'.format(numbers[2:])) # 뒤에 숫자를 생략하면 끝까지
print('numbers : {}'.format(numbers[2:-2])) # -값을 넣으면 뒤쪽부터
print('numbers : {}'.format(numbers[-5:-2])) # -값을 넣으면 뒤쪽부터
- [n:m]을 이용하면 문자열도 슬라이싱이 가능하다.
str = 'abcdefghijklmonpqrstuvwxyz'
print('str length : {}'.format(len(str)))
- 슬라이싱할 때 단계를 설정할 수 있다.
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers : {}'.format(numbers[2:-2]))
print('numbers : {}'.format(numbers[2:-2:2])) # 콜론을 두개 사용하면 단계를 설정할 수 있다 이것의 경우 한칸을 건너뛰고 2씩!
print('numbers : {}'.format(numbers[:-2:2])) # 시작을 생략 가능!
print('numbers : {}'.format(numbers[::2])) # 시작과 끝을 모두 생략하면 전체 선택!
- 슬라이싱을 이용해서 아이템을 변경할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
students[1:4] = ['park chanho', 'lee younggyu', 'gang hodong'] # 슬라이싱해서 데이터를 바꾼다!
print('students : {}'.format(students))
- slice() 함수를 이용해서 아이템을 슬라이싱할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
print('students : {}'.format(students[slice(2, 4)]))
print('students : {}'.format(students[slice(4)])) # 시작값 생략
print('students : {}'.format(students[slice(2, len(students))]))
print('students : {}'.format(students[slice(2, len(students) - 2)])) # 끝에서 두번째 까지
print('students : {}'.format(students[slice(len(students) - 5, len(students) - 2)]))
이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.