본문 바로가기

나 취준생/파이썬

리스트

320x100

# 리스트 만들기 ( range )


[0,1,2,3] 이나 [100,101,102,103]과 같이

순차적인 정수 리스트를 만드는 가장 간단한 방법은

파이썬 내장 함수인 range()를 이용하는 것이다.


print( list(range(1,11) ) ) # [1,2,3,4,5,6,7,8,9,10]

dice=list(range(1,7))

print(dice) # [1,2,3,4,5,6]


a=list(range(2,10,2))

print(a) # [2,4,6,8]


예제 : 주사위 2개를 만들고 10000번 던져서 주사위 눈의 합이 10이 되는 확률을 구하기


1
2
3
4
5
6
7
8
dice=list(range(1,7))
dice2=list(range(1,7))
import random as r
cnt=0
for i in range (10000):
    if r.choice(dice)+r.choice(dice2)==10:
        cnt+=1
print(cnt/10000)





# 리스트의 특정 위치의 요소 얻기


리스트의 특정 위치에 있는 요소값을 얻으려면 문자열과 마찬가지로 인덱싱을 이용한다.


a=[1,2,'a','b','c',[4,5,6]]

print(a[1]) # 2

print(a[5]) # [4,5,6]

print(a[5][0]) # 4


리스트 객체의 index() 메소드는

리스트에서 요소의 값을 알고 있을 때

그 요소가 최초로 나타나는 위치의 인덱스를 리턴한다.


a=[1,2,'a','b','c',[1,2,3]]

print(a.index(2))  # 1

print(a.index('a')) # 2



# 리스트에서 특정 구간에 있는 요소 추출하기


list=['a','b','c','d','e','f','g']

print(list[0:4]) # ['a', 'b', 'c', 'd']

print(list[2:])  # ['c', 'd', 'e', 'f', 'g']

print(list[:3])  # ['a', 'b', 'c']


*     : 을 두 번 사용하면 추출할 간격을 조정할 수 있다.


list=['a','b','c','d','e','f','g']

print(list[1::2])  # ['b', 'd', 'f']



# 리스트 안에 있는 요소 변경하기


list=['a','b','c,','d','e']

list[2]='z' 

print(list) # a,b,z,d,e



# a~z가 담긴 리스트 만들기


1
2
import string
print(string.ascii_lowercase)




이렇게 string 모듈을 활용해서 리스트를 만드는 방법이 있고,


1
2
3
4
5
import string
list=[]
for i in string.ascii_lowercase:
    list.append(i)
print(list)



chr를 활용해서 만드는 방법이 있다.


1
2
3
4
a=[]
for i in range(97,123):
    a.append(chr(i))
print(a)






# 리스트 요소 순서를 역순으로 만들기


리스트 객체의 reverse() 메소드는 리스트의 모든 요소 순서를 거꾸로 만든다.


list=['a','b','c','d','e','f','g']

list.reverse()

print(list) # ['g', 'f', 'e', 'd', 'c', 'b', 'a']


예제 : emp2.csv 파일에 있는 사원의 월급을 내림 차순으로 정렬하기


1
2
3
4
5
6
7
8
9
10
11
import csv
file=open('c:\\data\\emp2.csv',encoding='UTF-8')
emp_122=csv.reader(file)
a=[]
for i in emp_122:
    a.append(i[5])
print(a)
a.sort()
print(a) # 오름차순으로 정렬
a.reverse()
print(a) # 역순으로 정렬 -> 내림차순




* reversed() reverse()와 동일하게 시퀀스 자료형의 순서를 역순으로 만드는 메소드이지만

차이점은

reverse() : 원본 데이터를 역순으로 변환

reversed() : 원본 데이터는 역순으로 변환하지 않고 반환


list_A=['a','b','c','d','e','f','g']

R_list=reversed(list_A)

print(list(R_list)) # ['g', 'f', 'e', 'd', 'c', 'b', 'a']

print(list_A)    # ['a','b','c','d','e','f','g']

list_A.reverse()

print(list_A)    # ['g', 'f', 'e', 'd', 'c', 'b', 'a']



# 리스트 합치기


두 개의 리스트를 연결하여 새로운 리스트를 만드는 방법은

+ 연산자를 이용하여 더하면 된다.


listdata1=['a','b','c','d']

listdata2=['e','f','g','h']

listdata3=listdata1 + listdata2


print(listdata3) # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']



# 리스트 반복하기


리스트 * 숫자는 리스트를 n번 반복해서 새로운 리스트를 만든다.

예를 들어, list*2는 list + list 와 동일한 결과가 출력된다.


listdata=list(range(0,3))

result=listdata*3

print(result)  # [0, 1, 2, 0, 1, 2, 0, 1, 2]



# 리스트에 요소 추가하기 ( append )


리스트 객체의 append()는 괄호안의 요소를 리스트에 추가하는 메소드 함수이다.


listdata=[]

listdata.append('a')

listdata.append('b')

print(listdata) # ['a' , 'b']


# 리스트에 있는 요소 개수 구하기 ( len )


파이썬 내장함수인 len()은 시퀀스 자료형의 크기를 구하는 함수다.

len()을 리스트에 적용하면 리스트의 모든 요소의 개수를 리턴한다.


a=['파','이','썬',['파','이','썬']]

print(len(a)) #4



# 리스트에서 특정 요소 개수 구하기 ( count )


리스트.count('요소') 은 객체 리스트에서 '요소'의 개수를 구하는 메소드이다.

box=['파','이','이','썬']

print(box.count('파')) # 1

print(box.count('이')) # 2



# 리스트 제거하기 ( del )


리스트 자체를 메모리에서 제거하려면 다음과 같이 del 명령어를 수행한다.

a=[1,2,3,3,3,4]

del a

print(a) # NameError : name 'a' is not defined --> 메모리에서 완전히 지워졌음


마치 SQL의 DROP TABLE 같은?



# 리스트 요소 무작위로 섞기 ( shuffle )


파이썬 기본 모듈인 random은 난수를 발생시키는 모듈인데

리스트의 요소를 무작위로 섞는 shuffle도 갖고 있다.


1
2
3
4
from random import shuffle
a=[1,2,3,4,5,6,7,8,9,10]
shuffle(a)
print(a)












반응형