8.1 아스키 코드
아스키의 의미는
American Standard Code for Information Interchange 라고 한다..,
8.2 list
리스트에는 여러 가지 값을 한 번에 저장할 수 있다.
The most useful concept 이라고 교수님께서 설명하실 정도로 아주아주 중요!
spam = ['apples', 'oranges', 'grapes']
처럼 저장할 수 있다.
하나의 리스트에 string형, float형, int형을 다 넣을 수 있다.
각각의 들어있는 individual value 들은 item 이라고 부른다.
그 item들을 부르기 위해서는 index를 이용할 수 있는데, 0부터 순서대로 []를 이용해 부를 수 있다.
spam = ['apples', 'oranges', 'grapes'] # 이렇게 리스트를 세워주면
spam[0] # 이건 'apples'이고
spam[1] # 이건 'oranges'이다.
spam[4] # 이건 index 범위를 넘어가서 Index error가 발생한다
리스트에 한번에 여러가지 item들을 저장해두는 게 편한 이유는
리스트가 없으면 하나의 item을 전부 ~~ 다 각각의 변수를 세워 만들어줘야 하는 번거로움을 줄여주기 때문이다.
list이름[index번호] << 이걸 그냥 변수로 봐주고 다른 변수들처럼 이용해주면 된다.
문자열 형태의 아이템 두개를 연결하고 싶으면
>>> spam[0]+spam[1]
'applesoranges'
이런식으로!
내가 만든 리스트 spam에는 index가 2까지 있는데(0,1,2) 만약 2보다 큰 숫자를 인덱스에 넣고 무리하게 불러오려 하면 index error가 발생한다.
list는 바꿀 수 있는 자료형이다(mutable) <<< 몰랐는데 나중 가니까 되게 중요한 거였다!
만약 내가 만든 리스트 spam에 있는 'oranges'를 'peaches'로 바꾸고 싶으면
spam[1] = 'peaches'
이렇게 해주면 된다.
세상에 이렇게 간단할수가!
list concatenation 리스트를 이어주는 것이다.
중요성은 잘 모르겠지만 배웠으니까!!
list1 = [1, 2, 3, 4]
list2 = ['I', 'want', 'to', 'sleep']
list1 + list2 # 혹은
[1, 2, 3, 4] + ['I', 'want', 'to', 'sleep'] #이렇게
하면!
[1, 2, 3, 4, 'I', 'want', 'to', 'sleep']
이런 리스트가 만들어진다
in operator
리스트 안에 내가 원하는 값이 있나 확인하는 연산자? 이다.
spam = ['apples', 'oranges', 'grapes']
'apples' in spam
True
하고 나온다.
만약 내가 'apples' in spam 이라고 안하고 apples in spam 이라고 하면 어떻게 될까? (따옴표 제거)
False 하고 나온다. string은 string인걸 표시하기 위해 따옴표가 꼭 필요하고 따옴표가 없으면 변수 이름 같아진다.

궁금해서 해봤다. 당연한 결과겠지만.. 이해에는 더 도움이 될 것 같아서..
이거는 list라서 단어의 구성 문자열 (예: 'ora')가 있냐고 물어보면 없다고 한다.


당연히 띄어쓰기된 것도 문자열이니까!! 자연스럽게 받아들이면 된다.
del statement
이거는 list에서 필요없는 걸 삭제해주는 것이다.
교수님 예시가 이해하기 편해서 그대로 가져왔다.

계속 연속해서 index가 1인 값을 지우고 있는데, 하나씩 사라지는 모습을 볼 수 있다.
리스트에서 무엇인가 변화를 주면 바뀐 것에서 index도 함께 변한다는 것을 관찰할 수 있는 대목이다.
lists of lists
놀랍게도 list들을 하나로 엮은 list도 만들 수 있다!
bts = ['남준', '석진', '윤기', '호석', '지민', '태형', '정국']
blackpink = ['지수', '제니', '리사', '로제']
itzy = ['류진', '예지', '유나', '채령', '리아']
idol = [bts, blackpink, itzy]

반대로
저 이중 리스트에서 이름을 지정할 수도 있다.
idol = [['남준', '석진', '윤기', '호석', '지민', '태형', '정국'],
['지수', '제니', '리사', '로제'], ['류진', '예지', '유나', '채령', '리아']]
bts = idol[0]
blackpink = idol[1]
itzy = idol[2]
이건 2차원이라고 보면 된다.

알겠죠?
listoflist[n][m]
에서 n은 내가 만든 걸로 보면 각 아이돌 그룹의 인덱스, m은 그 아이돌 그룹 멤버의 인덱스이다.
문자열 쪼개기
split()를 사용하면 쪼개서 저장된다. -> list 로!!

reverse()
위의 nct_dream이라는 리스트를 거꾸로 만들고 싶다면?

다른 변수에 저장하는 게 아니고 reverse()를 뒤에 붙이면 그 리스트 자체가 거꾸로 재저장됨을 기억하자..
append()
리스트에 원하는 값을 추가하고 싶을 때 사용할 수 있다.

무한 확장되는 nct와 잘 어울리는 method이다..
한번에 여러개를 넣고 싶으면
listname.append([a,b])
이런식으로 리스트 형태로 만들어서
remove()
list에서 내가 원하는 값을 삭제할 수 있다.
fruits = ['apples', 'banana', 'oranges']
fruits.remove('oranges')
print(fruits) #['apples', 'banana']
len()
리스트 안에 item 이 몇 개 들어가 있는지 보여준다.
animals = ['dog', 'cat', 'cow', 'horse']
print(len(animals)) #4
people = ['Alice', 'Bob']
print(len(people)) #2
print(len(animals) + len(people)) #6
이차원 형태의 리스트에 len을 씌우면
animals = [['chicken', 'duck'], ['monkey', 'dog', 'pig']]
print(len(animals)) #2
list index
index 부분은 문자열 설명할때 정말 정말 열심히 자세히 설명해뒀다!! range에도~~
language = ['python', 'C', 'C++', 'Java', 'R']
print(language[1:3]) #['C', 'C++']
print(language[-2:]) #['Java', 'R']
language[0:3] = 'C#'
print(language) #[0:3] 자리에 있는 'python', 'C', ,'C++'이 사라지고 'C','#',공백이
#들어가서 ['C', '#', 'Java', 'R']가 출력됨
a = ['too', 'short', 'Life', 'is']
b = a[2:] + a[0:2] #['Life', 'is', 'too', 'short']
b = a[0:2] + b[2:] #['too', 'short', 'too', 'short']
list comprehension
반복문을 이용해서 같은 리스트를 만드는 방법
1. 빈 리스트를 하나 만들어주고 for문 안에서 append 함수를 통해 리스트 늘려주기
2. 리스트를 선언하는 줄에 for문을 넣어 값을 넣어주기
# Raw for loops
squares = []
for i in range(10):
squares.append(i*i)
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# List comprehension
squares = [i*i for i in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
sort , sorted
x.sort() 는 기존의 리스트 값을 변경한다. -> 상자 내부를 정리한다.
sorted(x) 는 정렬된 신규 데이터를 만든다. -> 새로운 상자를 만든다. 기존 자료를 건드리지 않는다.
기존 자료를 보존하고 싶으면 sorted()를 사용한다.
sorted(정렬할 것 이름, 정렬기준)
원하는 정렬 순이 반대라면
sorted(정렬할 것 이름, 정렬기준 = True)
원하는 정렬 기준이 있다면
sorted(정렬할 것 이름, key = 기준이름) -> sort에서도 쓸 수 있다.
data = [3, 5, 1, 10, 9]
sorted_data = sorted(data)
print(sorted_data)
sorted_data = sorted(data, reverse = True)
print(sorted_data)
data = [{"name" : "Max", "age" : 6},
{"name" : "Lisa", "age" : 10}, # 여기서 data의 타입은 list이다
{"name" : "Max", "age" : 9}] # dictionaries를 포함하는 list
sorted_data = sorted(data, key=lambda x: x["age"]) # lambda는 13에서 소개함
print(sorted_data)
[1, 3, 5, 9, 10]
[10, 9, 5, 3, 1]
[{'name': 'Max', 'age': 6}, {'name': 'Max', 'age': 9}, {'name': 'Lisa', 'age': 10}]
'프로그래밍 > python' 카테고리의 다른 글
10. tuples, sets (0) | 2021.12.30 |
---|---|
9. dictionaries (0) | 2021.12.29 |
7. lower(), upper(), recursive function (0) | 2021.12.29 |
6. function definition, function call, local/global variables (import time) (0) | 2021.12.29 |
5. nested loop (0) | 2021.12.29 |