22. 리스트, 튜플 응용

Joy·2020년 3월 3일
0

22. 리스트, 튜플 응용

append: 요소 하나를 추가
extend: 리스트를 연결하여 확장
insert: 특정 인덱스에 요소 추가
insert(0, 요소): 리스트의 맨 처음에 요소를 추가
insert(len(리스트), 요소): 리스트 끝에 요소를 추가

pop(인덱스): 마지막 요소 또는 특정 인덱스의 요소를 삭제
remove(값): 특정 값을 찾아서 삭제

리스트의 마지막 요소를 삭제한 뒤 삭제한 요소를 반환

>>> a = [10, 20, 30]
>>> a.pop()
30
>>> a
[10, 20]

pop(인덱스)는 해당 인덱스의 요소를 삭제한 뒤 삭제한 요소를 반환. del을 사용해도 상관없음

>>> a = [10, 20, 30]
>>> a.pop(1)
20
>>> a
[10, 30]
>>> a = [10, 20, 30]
>>> del a[1]
>>> a
[10, 30]

index(값)은 리스트에서 특정 값의 인덱스를 구합니
count(값)은 리스트에서 특정 값의 개수를 구합
reverse()는 리스트에서 요소의 순서를 반대로
sort()는 리스트의 요소을 작은 순서대로 정렬하는 메서드
clear()는 리스트의 모든 요소를 삭제
or clear 대신 del a[:]와 같이 시작, 끝 인덱스를 생략하여 리스트의 모든 요소를 삭제

sorted 함수: sort 메서드와 비슷하지만 sorted는 새 리스트 생성

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()    # a의 내용을 변경하여 정렬
>>> a
[10, 15, 20, 20, 30, 40]
>>> b = [10, 20, 30, 15, 20, 40]
>>> sorted(b)    # 정렬된 새 리스트를 생성
[10, 15, 20, 20, 30, 40]

리스트가 비어있는지 확인

if not seq: # 리스트가 비어 있으면 True
if seq: # 리스트에 내용이 있으면 True

리스트 할당, 복사

copy 메서드

>>> a = [0, 0, 0, 0, 0]
>>> b = a.copy()

a is b
False 두 리스트는 다른 객체
a == b
True 복사된 요소는 모두 같으므로

인덱스와 요소 함께출력

for 인덱스, 요소 in enumerate(리스트, start=숫자):

>>> for index, value in enumerate(a, start=1):
...     print(index, value)
...
1 38
2 21

가장큰수, 가장 작은수

min, max 함수를 사용

요소 합계

sum 함수

표현식

리스트 안에 for 반복문과 if 조건문을 사용할 수 있다
리스트 컴프리헨션(list comprehension) : 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것

[식 for 변수 in 리스트]
list(식 for 변수 in 리스트)

>>> a = [i for i in range(10)]        # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))    # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[식 for 변수 in 리스트 if 조건식]
list(식 for 변수 in 리스트 if 조건식)

>>> a = [i for i in range(10) if i % 2 == 0]    # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]

여러번 사용

[식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n]

a = [i * j for j in range(2, 10)
           for i in range(1, 10)]

Map 사용

map은 리스트의 요소를 지정된 함수로 처리해주는 함수

list(map(함수, 리스트))
tuple(map(함수, 튜플))

>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]

문제

표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~20, 두 번째 입력 값의 범위는 10~30이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지를 지수로 하는 2의 거듭제곱 리스트를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 리스트의 두 번째 요소와 뒤에서 두 번째 요소는 삭제한 뒤 출력하세요. 출력 결과는 리스트 형태라야 합니다.

a, b = map(int, input().split())
x = list(2 ** i for i in range(a, b+1))
x.pop(1)
x.pop(-2)
print(x)
profile
roundy

0개의 댓글