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
&aa의 주소
pa의 주소를 저장
*pp가 가리키는 곳의 값, 즉 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 = 빌린 메모리 반납