1. Python List Comprehension
핵심
리스트를 짧게 만드는 문법임.
원래 이렇게 쓰는 걸:
result= []
foriinrange(5):
result.append(i)
이렇게 줄임.
result= [iforiinrange(5)]
결과:
[0,1,2,3,4]
조건까지 넣는 경우
result= [iforiinrange(10)ifi%2==0]
결과:
[0,2,4,6,8]
암기
List Comprehension = for문으로 리스트 만드는 걸 한 줄로 줄인 것
2. Python 튜플의 특징
핵심
튜플은 수정할 수 없는 리스트라고 생각하면 됨.
t= (1,2,3)
리스트는 수정 가능:
a= [1,2,3]
a[0]=10
튜플은 수정 불가:
t= (1,2,3)
t[0]=10# 오류
튜플 특징
| 특징 | 설명 |
|---|---|
| 순서 있음 | 인덱스로 접근 가능 |
| 중복 가능 | 같은 값 여러 개 가능 |
| 수정 불가 | 값 변경, 삭제, 추가 불가 |
| 괄호 사용 | (1, 2, 3) |
| 읽기 전용 데이터에 사용 | 바뀌면 안 되는 값 저장 |
암기
튜플 = 리스트처럼 여러 값을 담지만, 한 번 만들면 수정 불가
3. Python with문
핵심
with문은 파일을 열고 나서 자동으로 닫아주는 문법임.
보통 파일 처리에서 나옴.
withopen("a.txt","r")asf:
data=f.read()
이 코드는 이런 의미임.
f=open("a.txt","r")
data=f.read()
f.close()
근데 with를 쓰면 close()를 직접 안 써도 됨.
as f 뜻
withopen("a.txt","r")asf:
여기서 f는 열린 파일을 가리키는 이름임.
쉽게 말하면:
a.txt 파일을 열고, 그 파일을 f라는 이름으로 사용하겠다.
암기
with = 자원 자동 정리 문법 / 파일 자동 close
4. C언어 구조체 멤버 접근 연산자
구조체는 여러 변수를 하나로 묶은 자료형임.
structStudent {
intid;
charname[20];
};
구조체 변수로 접근할 때는 . 사용.
structStudents1;
s1.id=1;
포인터로 접근할 때는 -> 사용.
structStudent*p;
p=&s1;
p->id=2;
p->id는 사실상 이거랑 같음.
(*p).id
정리
| 상황 | 연산자 | 예시 |
|---|---|---|
| 구조체 변수 | . | s1.id |
| 구조체 포인터 | -> | p->id |
암기
일반 구조체는 점, 포인터 구조체는 화살표
5. C언어 , &, 주소와 포인터
&의 뜻
&는 주소를 가져오는 연산자임.
inta=10;
printf("%p",&a);
&a는 a의 주소.
의 뜻 1: 포인터 선언
int*p;
이건 p가 int형 변수의 주소를 저장하는 포인터라는 뜻임.
의 뜻 2: 역참조
inta=10;
int*p=&a;
printf("%d",*p);
여기서 *p는 p가 가리키는 주소 안의 값임.
결과는:
10
전체 흐름
inta=10;
int*p=&a;
| 코드 | 의미 |
|---|---|
a | 값 10 |
&a | a의 주소 |
p | a의 주소를 저장 |
*p | p가 가리키는 곳의 값, 즉 10 |
암기
& = 주소 꺼내기 / * = 주소 따라가서 값 꺼내기
6. C언어 malloc 함수
핵심
malloc은 메모리를 실행 중에 직접 할당하는 함수임.
정확히는 동적 메모리 할당 함수.
int*p;
p= (int*)malloc(sizeof(int));
이 뜻은:
int 하나를 저장할 공간을 메모리에 만들고, 그 주소를 p에 저장한다.
배열처럼 여러 개 만들기
int*arr;
arr= (int*)malloc(sizeof(int)*5);
이건 int 5개짜리 공간을 만든 것.
malloc 사용 후 free
free(arr);
malloc으로 빌린 메모리는 나중에 free()로 해제해야 함.
암기
malloc = 실행 중 메모리 빌리기 / free = 빌린 메모리 반납