여정의 기록

파일구조 List 본문

공부/Python

파일구조 List

Chelsey 2022. 2. 10. 01:17
728x90

List

여러개의 자료 저장 가능 -> 각 자료를 원소라고 함

데이터를 일렬로 늘여놓은 구조

여러가지 자료형을 자유롭게 넣을 수 있다. -> dynamic 하다. / array of numpy : static 하다, 속도가 매우 빠르다.

단, 메모리에 기억되므로 메모리 범위한에서 가능하다.

| 리스트=[요소값, 값, 값 ... ]

a=[] # 빈 리스트
a2=[10,20,30] #요소(element)
a3=['hi','hello']
a4=[10,20,'hi']
a5=[10,'hi',1.15,True]
# list 함수를 그냥 대입해서 빈리스트를 만들 수도있다.
a6=list()

slice 방법

a=[10,20,30,40,50]
# slice
a[0:3] #시작번호(포함):끝번호(포함x), list 형태
# list에서 list 형태를 뽑아낸다.

enumerate(index, data) 

인덱스와 데이터 한번에 출력

a=[1,2,3]

enumerate(a)

for idx, value in enumerate(a):
	print(idx, value)

for idx, value in enumerate(a, start=1) #index 1부터 시작
	print(idx, value)

곱셈, 덧셈 

a=[10,20]
b=[30,40]
a*3
a+b

len

list, str, dictionary, tuple type can use 'len()' length .

len("hello") # 5

어떤 리스트의 원하는 원소값에 다른 type 값을 붙여 원소값을 변경하고 싶을 때는 형변환해야 한다.

s=[10,20]
print(s[0]) # 10
print(str(s[0]) + "hi")
# 활용 예시
if len("hello")==5:
	print("ok")

count

해당 데이터 갯수 (문자열에서의 함수가 List에서도 사용이 가능하다. x.x)

a.count(4) # a list안에 4라는 데이터 값이 몇개 있는가

range

리스트 타입의 숫자 정수 범위

list(range(10))

list(range(0,10,2)) # 0에서 9까지 숫자 증감값 2
list(range(10,0,-1)) # 증감값이 -1이기 때문에 10,9,8,... 감소가능하다

sort, reverse, sorted

sort() 정렬하기

ascii code value 기준! 으로 정렬하여 바로 저장됨

a.sort()

reverse() 역순

해당 변수의 역순으로 저장됨

a.reverse()

sort와 reverse를 together

a.sort()
a.reverse()

# 혹은
a.sort(reverse=True) # 로 가능

sorted()

자동저장은 안하고 정렬만

sorted(a)

slicing 이용한 reverse

a[-1::-1]
# -1 번째 인덱스부터 전체를 -1 증감값으로 리스트 나열

chr()

인코딩 : 코딩화(문자, 숫자 등을 코드 0과1로 변환)

디코딩 : 코딩화된 것을 사람이 알아볼 수 있는 문자, 숫자로 변환

인코딩/디코딩 방식 종류 : ascii(7bit), ebcdic, bcd, utf8, utf16,  euc-kr 등...

모든 문자/숫자를 7bit로 표현 : ascii, 7bit = 2의 7승 = 128가지 문자표현 가능

0 ~ 127

char(65) 괄호안에 있는 아스키코드를 문자로 변환하여 출력한다. -> A

# ascii를 list에 그냥 넣을 수도 있다.
b=["Hi","Hello","Apple","B",'c','d','0', chr(95)]

수정, insert, append, extend, remove, pop

element 수정

a=[10,20,30]
a[2]=40 # index로 골라서 값 할당

insert()

list내 특정 인덱스값 위치에 데이터 삽입 , 그 후 인덱스값은 뒤로 밀려남

a.insert(index, value)

a=[10,20,30]
a.insert(1, 40)
# 10, 40, 20, 30

append()

list의 마지막 element에 추가됨

a.append(value)

a.append([50,60])
a.append(50)

extend()

list 형태로 넣어줘야한다.

a.extend([40,30])

슬라이스 이용한 여러 데이터 추가 

        인덱스 시작번호와 끝번호를 같게하면 가능

a[3:3]=[20,30]

remove()

데이터 값 찾아서 삭제

같은 값이 여러개 있다면 index 값이 작은 순서대로 체크하면서 가장 처음 나타나는 value 값 하나만 삭제

a.remove(value)

del()

변수삭제 혹은 index값 이용한 원소값 삭제

# a 변수 삭제
del a 

# a의 index 2번 삭제
del a[2]
# a의 index 2번부터 삭제
del a[2:]

clear()

all remove

a.clear()

pop()

가장 마지막 요소 혹은 특정 index 지목 제거

a=[10, 20, 30]

# 마지막 요소 삭제
a.pop() # 30이 지목, a에서 삭제된다.

data=a.pop() 지목되고 제거되는 데이터가 담긴다.

# index 1자리에 있는 요소가 지목되고 제거된다.
a.pop(1)

최솟값 최대값

아래와 같이 구할수도 있고

a=[2,5,1]

# 1.
small=a[0] # 임시 지정
for i in a :
	if i < small :
    	small=i
print(small)

# 2.
a.sort()
print(a[0])

만들어진 함수를 이용할 수도 있다.

min(a) # 최솟값 함수

max(a) # 최댓값 함수

sum()

총합

sum(a)

List comprehension (list 내포(표현식))

list type 자체로 for, if 문 등 사용할 수 있는 식

# x는 list의 지역변수
[x for x in range(10)] # [0,1,2,3,4,5,6,7,8,9]
list(x for x in range(10))

range(10)가 if i%2==0이면 i로써 리스트에 저장됨

[i for i in range(10) if i%2==0]
# 이중 for문
[i+j for i in a for j in b]
# if else문
["even" if i%2==0 else "odd" for i in range(10)]
728x90