리스트 연결
extend()
: 리스트에 또 다른 리스트 연결(확장)할 수 있음 Q. 나와 친구가 좋아하는 번호를 합치되 번호가 중복되지 않게 출력
myFavNum = [1,3,5,6,7]
friendFavNum = [2,3,5,8,10]
print('myFavNum: {}'.format(myFavNum))
print('friendFavNum: {}'.format(friendFavNum))
addList = myFavNum + friendFavNum
print('addList: {}'.format(addList))
result = []
for number in addList:
if number not in result:
result.append(number)
print('result: {}'.format(result))
리스트 연결(확장)
sort()
: 아이템 정렬 가능 sotr(reverse = True)
: 내림차순 정렬 Q. 최저/최고 점수 삭제 후 총점과 평균 출력
playerScore = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('palyerScore: {}'.format(playerScore))
playerScore.sort()
print('playerScore: {}'.format(playerScore))
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('총점: {}'.format(round(sum, 2)))
print('평균: {}'.format(round(avg, 2)))
리스트 아이템 순서 뒤집기
reverse()
: 아이템 순서 뒤집기 Q. 암호 해독 출력
secret = '27156231'
secretList = []
solvedList = ''
for cha in secret:
secretList.append(int(cha))
print('secretList: {}'.format(secretList))
secretList.reverse()
print('secretList: {}'.format(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]
: 리스트에서 원하는 아이템만 뽑기[n:m:s]
슬라이싱 할 때 단계(s → 아이템 간격) 설정 가능slice()
함수 이용해서 아이템 슬라이싱 가능 리스트 슬라이싱
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은]'
print('students: {}'.format(students[2:4])) # 2 <= < 4
print('students: {}'.format(students[:4])) #앞에 생략하면 인덱스0부터 시작
print('students: {}'.format(students[2:])) #뒤에 생략하면 인덱스2부터 끝까지
print('students: {}'.format(students[2:-2])) #인덱스 2부터 뒤에서 -1, -2 해서 강호동까지
print('students: {}'.format(students[-5:-2]))
____________________________________________________________________________________
<결과값>
students: ['이용규', '강호동']
students: ['홍길동', '박찬호', '이용규', '강호동']
students: ['이용규', '강호동', '박승철', '김지은']
students: ['이용규', '강호동']
students: ['박찬호', '이용규', '강호동']
슬라이싱 단계 설정
numbers = [2, 50, 0.12, 1, 9, 7, 17, 35, 100, 3.14]
print('numbers: {}'.format(numbers[2:-2:2]))
print('numbers: {}'.format(numbers[::2]))
_______________________________________________
<결과값>
numbers: [0.12, 9, 17]
numbers: [2, 0.12, 9, 17, 100]
슬라이싱 이용한 아이템 변경
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students: {}'.format(students))
students[1:4] = ['park chanho', 'lee yonggyu', 'gang hodong']
print('students: {}'.format(students))
___________________________________________________________________
<결과값>
students: ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students: ['홍길동', 'park chanho', 'lee yonggyu', 'gang hodong', '박승철', '김지은']
slice()함수
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
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)]))
________________________________________________________________________________
<결과값>
students: ['홍길동', '박찬호', '이용규', '강호동']
students: ['이용규', '강호동', '박승철', '김지은']
students: ['이용규', '강호동']
students: ['박찬호', '이용규', '강호동']
리스트 나머지 기능들
index(item)
: 아이템의 인덱스 파악 count()
: 특정 아이템의 개수파악 가능 del
키워드를 사용하여 특정 아이템 삭제Q. 1부터 10까지의 정수가 중복되지 않고 섞여 있을 때 행운의 숫자 7의 위치 찾기
import random
sampleList = random.sample(range(1, 11), 10)
selectIdx = int(input('숫자 7의 위치 입력: '))
searchIdx = sampleList.index(7)
if searchIdx == selectIdx:
print('빙고')
else:
print('아쉬워')
print('sampleList: {}'.format(sampleList))
print('searchIdx: {}'.format(searchIdx))
Q. 하루동안 헌혈을 진행한 후 혈액형 별 개수 파악
import random
types = ['A', 'B', 'AB', 'O']
todayData = []
typeCnt = []
for i in range(100):
type = types[random.randrange(len(types))]
todayData.append(type)
print('todayData: {}'.format(todayData))
print('todayData length: {}'.format(len(todayData)))
for type in types:
print('{}형 : {}개'.format(type, todayData.count(type)))
튜플
list = [ ]
tuple = ( )
in, not in 키워드
in
, not in
키워드를 이용하면 아이템의 존재 유/무를 알 수 있음 Q. 1-10까지 5개의 난수를 생성한 후, 사용자가 입력한 숫자 유무 출력
import random
randomNumbers = random.sample(range(1, 11), 5)
userNumber = int(input('숫자 입력(확률 50%): '))
if userNumber in randomNumbers:
print('빙고')
else:
print('다음 기회에')
print('randomNumbers: {}'.format(randomNumbers))
print('userNumber: {}'.format(userNumber))
튜플길이
len()
과 반복문을 이용하면 튜플의 아이템 조회 가능 튜플 결합
+
를 이용하여 두 개의 튜플 결합 가능extend()
함수는 튜플에서 사용 불가Q. 튜플 이용해서 나와 친구가 좋아하는 번호를 합치되 번호 중복되지 않게 출력
myFavNum = (1, 3, 5, 6, 7)
friendFavNum = (2, 3, 5, 8, 10)
print('myFavNum: {}'.format(myFavNum))
print('friendFavNum: {}'.format(friendFavNum))
for num in friendFavNum:
if num not in myFavNum:
myFavNum = myFavNum + (num, ) #(num, ) -> num은 int여서 튜플로 바꿔주기
print('myFavNum: {}'.format(myFavNum))
튜플 슬라이싱
slice()
: 아이템 슬라이싱 가능 리스트와 튜플 차이점