배우고 느낀 것들
[언어분석을위한프로그래밍] 3주차 본문
<언분프 3주차>
리스트: 변경 가능
1번 자리에 d 추가
fruits = ['a', 'b', 'c']
fruits.insert(1,'d')
print(fruits)
#특정 리스트에 저장된 모든 원소에 대해 조건에 맞는 원소만 선택적으로 추가
#(1)의 원소를 2로 읽어와서 조건식3에서 그 값을 테스트하고, 참이면 4를 리스트에 입력
#i4 for i2 in (리스트명1) if (조건식3)
mylist = [3, 5, 4, 9, 1, 8, 2, 1]
newlist = [i for i in mylist if (i%2)==0]
print(newlist)
/
mylist = [3, 5, 4, 9, 1, 8, 2, 1]
newlist = [i for i in mylist if (i%2)==0]
print(newlist)
num_list = [[n * m for n in range(3)] for m in range(2,4)] #리스트 안에 리스트 형태 , n*m 형태로 출력
print(numlist) #m은 2,3 -> n = 0,1,2 -> 2 * 0,1,2 / 3 * 0,1,2
/
nums = [1, 2, 5, 7, 9]
nums.pop()
nums.pop()
print(nums)
#입력값을 넣으면 인덱스로 삭제
#in, not in 으로 존재 여부 확인
#*, for 로 반복 출력
/
nums = [1, 3, 4, 6, 5, 5, 7, 8]
print(nums.count(5)) #특정 값5의 개수 세기
print(nums.index(3)) #x값이 "처음" 나오는 인덱스 번호 반환
/
#2차원 리스트
fruitdb = [['a',1], ['b',2], ['c',3]
print(fruitdb[1],[1])
/
#2차원 리스트에 저장된 모든 리스트들의 1번 인덱스에 저장된 내용들만 모아서 새로운 인덱스 생성 p.90
index =[ary] *****
튜플: 변경 불가
괄호 생략, 혹은 괄호로 묶인 배열
튜플의 중첩
animals = ("A", B,C)
fruits = (D, E, F)
things = animals, fruits
or print(fruits,animals)
인덱싱, 슬라이싱은 가능, 내용 변경은 불가능
fruits[1] = 'F' -> 에러 발생
리스트를 포함하는 튜플
fruits = ([a,b], [c,d])
print(fruits[1])
newfruits = [e,f]
fruits[1] = newfruits -> 에러 BUT
fruits[1][0] = 'e' -> 리스트의 값 수정이기 때문에 변경 가능
튜플을 포함하는 리스트
fruits = [a,b],[c,d]
fruits[0]=[a,b]-> 가능
슬라이싱과 병합 가능
: 복수개의 변수를 한 개의 튜플로 묶거나(packing) 풀(unpacking) 수 있음
x = 12.23
y = 23.34
packing = (x,y)
type(packing)
print('packing:',packing)
(c1,c2)=packing
print('c1:',c1)
print('c2:',c2)
2차원으로 튜플 구성
: 사진 참고
딕셔너리 { }
한 사전에 유일한 키들을 포함해야 함
키로 색인: 문자열,숫자, 튜플 (변경 불가능한 값)
student = {} # or dict()
student['지훈'] = 1234 #or student[지훈] = 1234
student[수민] = 3456
student = {"지훈":1234, "수민":3456}
print(student.get('길동')) : 키가 있으면 해당 키값을 반환, 없으면 none
print(student.keys()): 모든 키 반환
print(students.values()): 모든 값을 반환
print(students.items()): 모든 키,값을 반환
인덱싱, 슬라이싱 불가능
/
값 제거, 불러오기
fruitdb = {'A':1020, 'O':880, 'G':3160}
del fruitdb['A']
print(fruitdb)
#880 출력
print(fruitdb['O'])
del, print는 value가 아닌 index를 기준으로 사용해야 함
/
사전 병합 : update() 메소드 이용
newstd = {C,3456, D:4567}
student.update(newstd)
print(student)
/
다른 배열로 사전 만들기
dict()를 이용하면 키:값 쌍으로 된 배열을 사전으로 만들 수 있음 (리스트, 튜플 무관)
집합Set
사전과 마찬가지로 {}를 이용, 키만 있고 값이 없음
dict = {} # or dict = set()
set를 쓰면 리스트의 중복된 값 제거 가능
add, update로 추가
remove,pop으로 삭제
pop하게 되면 순서가 없으므로 임의로 하나 삭제됨
in, not in 연산자로 멤버 여부 확인 가능
print('A' in fruits)
집합의 연산 p.109
| : 합집합
&: 교집합
- : 차집합
^: 배타적 차집합
관계 기호:
<= : 왼쪽의 모든원소가 오른쪽에 있는지 조사
p.110 예제