일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 프로그래밍
- parameter
- github
- 시작해요 언리얼 2022
- c++
- 오류
- 파이썬
- C#
- Unreal Engine 5
- String
- Tutorial
- Class
- dynamic
- loop
- Basic
- Material
- UE5
- 문제풀이
- 기초
- Programming
- 백준
- Algorithm
- dfs
- W3Schools
- Unity
- python
- w3school
- guide
- DP
- 재귀
- Today
- Total
행복한 개구리
Python 공부내용 21.09.23. Python - List 1 본문
W3Schools의 Python Tutorial을 보며 해석하고 정리한 글입니다.
오역이 존재할 수 있습니다
저도 파이썬은 처음이니 가볍게 봐주세요 :D
파이썬 리스트
mylist = ["apple", "banana", "cherry"]
리스트
리스트는 여러가지 아이템을 하나의 변수에 저장할 때 사용합니다.
리스트는 데이터들을 배열 형식으로 저장할 수 있는 4가지의 빌트인 데이터타입중 하나이며 다른 3가지는 튜플, 셋(Set, 집합같은 개념), Dictionary가 있으며 모두 서로 특질이나 쓰임새가 다릅니다.
리스트는 대괄호 [] 를 사용하여 만듭니다.
thislist = ["apple", "banana", "cherry"]
print(thislist)

리스트 항목들(List Items)
리스트의 아이템들은 순서가 지정되고 변경 가능하며 중복되는 값을 허용합니다.
리스트의 아이템들은 인덱스를 가지며 첫 항목의 인덱스는 [0] , 두번째 항목의 인덱스는 [1] 입니다.
순서 정돈/정렬 하기(Ordered)
위에서 리스트의 아이템들은 순서를 지정할 수 있다고 했는데, 이것은 말 그대로 아이템들에게 순서를 정의해줄 수 있다는 뜻이며, 그리고 그 순서는 바뀌지 않을것입니다.
만약 당신이 새로운 항목을 리스트에 추가한다면 새로운 아이템은 리스트의 마지막에 위치하게됩니다.
주의 : 순서를 바꿀 수 있는 리스트 메서드들이 존재하지만 보통의 경우에는 리스트의 아이템들 순서는 바뀌지 않습니다.
변경 가능(Changeable)
리스트는 변경 가능이 가능합니다. 즉, 우리는 리스트가 생성되고 그것의 아이템들을 바꾸거나 추가하거나 제거할 수 있습니다.
중복 가능(Allow Duplicates)
리스트에 인덱스들이 매겨진 후, 리스트는 같은 값을 가지는 아이템들을 가질 수 있습니다.
thislist = ["apple""banana", "cherry", "apple", "cherry"]
print(thislist)

파이썬 - 리스트의 아이템들에 접근하기(Access List Items)
아이템들에 접근하기(Access Items)
리스트 항목(아이템)은 인덱스를 가지며 당신은 해당 인덱스를 통해 리스트의 항목들을 참조할 수 있습니다.
thislist = ["apple", "banana", "cherry"]
print(thislist[1])

주의 : 첫 항목(아이템)의 인덱스는 0입니다.
음수 인덱스 사용(Negative Indexing)
음수로 된 인덱스는 끝에서부터 시작되는 것을 의미합니다.
-1 은 마지막 항목을 나타내며, -2 는 끝에서부터 2번째에 있는 아이템을 의미하는 식으로 진행됩니다.
thislist = ["apple", "banana", "cherry"]
print(thislist[-1])

인덱스 범위지정(Range of Indexes)
당신은 범위의 시작과 끝을 지정함으로써 인덱스들의 범위를 특정할 수 있습니다.
범위를 특정할 때 반환되는 값은 새로운 리스트와 특정되어진 항목들입니다.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])

주의 : 검색하는 인덱스의 범위에서 시작인덱스 2의 항목은 포함되지만 끝 인덱스 5는 포함되지 않습니다. 즉, [2:5]는 '2 <= range < 5' 의 값을 갖습니다.
또한 첫번째 항목의 인덱스는 0임을 기억하세요.
시작 인덱스를 비운 채로 실행한다면 범위는 리스트의 처음부터 해당됩니다.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[:4])

끝 인덱스를 비운채로 실행한다면 범위는 리스트의 끝까지 해당됩니다.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:])

음수 인덱스들의 범위
음수 인덱스들로 범위를 지정하여 당신이 끝에서부터 원하는 범위를 검색할 수 있습니다.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[-4:-1])

항목이 존재하는지 확인하기(Check if Item Exists)
리스트에 특정한 항목이 존재하는지를 알고싶다면 리스트에서 in 키워드를 사용하세요
thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
print("Yes, 'apple' is in the fruits list")

파이썬 - 리스트의 항목들 바꾸기(Python - Change List Items)
항목의 값 바꾸기
특정한 항목의 값을 바꾸려면 해당 인덱스를 참조해야합니다.
thislist = ["apple", "banana", "cherry"]
thislist[1] = "blackcurrant"
print(thislist)

지정한 범위의 항목들의 값을 바꾸기(Change a Range of Item Values)
지정한 범위내의 항목들의 값을 바꾸기 위해서는 새로운 값들로 리스트를 정의해주어야 하며 그 값들로 바꿔줄 기존 리스트의 범위를 지정해주어야 합니다.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "mango"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(thislist)

만약 당신이 대체시킬 아이템들의 수보다 더 많은 것을 삽입하려한다면 새로운 아이템들은 당신이 지정한 곳에 삽입될 것이며 남는 아이템들은 그에 따라 이동될것입니다.
thislist = ["apple", "banana", "cherry"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(thislist)

주의 : 리스트에 대체할 항목들보다 더 많은 항목들을 삽입하려 할 때 리스트의 길이는 변합니다.
만약 당신이 대체할 아이템들보다 더 적은 수의 아이템을 삽입한다면 새로운 아이템들은 당신이 지정한 곳에 삽입되며 남은 아이템들은 그에 따라 이동됩니다.
thislit = ["apple", "banana", "cherry"]
thislist[1:3] = ["watermelon"]
print(thislist)

아이템 삽입하기(Insert Items)
리스트 아이템들을 기존 값들을 대체하는 방식이 아닌 새롭게 삽입하기 위해서 우리는 insert() 메서드를 사용할 수 있습니다.
insert() 메서드는 지정한 인덱스에 아이템을 삽입해줍니다.
thislist = ["apple", "banana", "cherry"]
thislist.insert(2, "watermelon")
print(thislist)

리스트에 아이템 추가하기(Add List Items)
아이템 추가하기/덧붙이기 (Append Items)
리스트의 마지막에 항목을 추가하고 싶다면 append() 메서드를 사용하면 됩니다.
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)

아이템 삽입하기(Insert Items)
특정한 인덱스에 항목을 삽입하고 싶다면 insert() 메서드를 사용하면 됩니다.
insert() 메서드는 특정 인덱스에 항목을 삽입해줍니다.
thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)

주의 : 위 예시에서 보이듯이 리스트의 길이가 늘어나서 길이가 4가 되었습니다.
리스트 늘리기(Extend List)
다른 리스트의 요소들을 현재 리스트에 추가하기 위해서는 extend() 메서드를 사용하면 됩니다.
thislist = ["apple", "banana", "cherry"]
tropical = ["mango", "pineapple", "papaya"]
thislist.extend(tropical)
print(thislist)

요소는 리스트의 마지막에 추가될것입니다.
이터러블 형식 추가하기(Add Any Iterable)
extend() 메서드는 리스트 뿐만 아니라 다른 이터러블(iterable)객체들을 추가할 수 있습니다.
thislist = ["apple", "banana", "cherry"]
thistuple = ("kiwi", "orange")
thislist.extend(thistuple)
print(thislist)

참고 - 파이썬에서 이터러블(iterable) 객체는 단순하게 말하여 반복 가능한 객체를 말합니다.
파이썬 - 리스트의 아이템들 제거하기(Remove List Items)
특정한 아이템 제거하기(Remove Specified Item)
remove() 메서드는 특정한 항목을 지워줍니다.
thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)

만약 당신이 인덱스를 지정하지 않았다면, pop() 메서드를 통해 끝에 있는 항목을 제거할 수 있습니다.
thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)

del 키워드는 리스트를 완전하게 지워줍니다.
thislist = ["apple", "banana", "cherry"]
del thislist

리스트 비우기(Clear the List)
clear() 메서드는 리스트를 비워줍니다.
리스트의 객체는 여전히 존재하며 다만 리스트의 내용물들을 비울 뿐입니다.
thislist = ["apple", "banana", "cherry"]
thislist.clear()
print(thislist)

파이썬 - 리스트 순환하기(Loop Lists)
리스트를 통해 반복시키기
당신은
for
반복문을 사용하여 리스트의 항목들을 반복할 수 있습니다.
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)

인덱스 번호를 통해 순환하기
당신은 또한 리스트의 항목들의 인덱스를 참조하여 반복할 수 있습니다.
Use() 그리고 len() 함수를 사용하면 적합한 이터러블을 생성할 수 있습니다.
thislist = ["apple", "banana", "cherry"]
for i in range(len(thislist)):
print(thislist[i])

위 예시에서는 [0, 1, 2] 값을 가진 이터러블을 생성했습니다.
While 반복문 사용하기
당신은 while 반복문을 통하여 리스트의 아이템들을 순환할 수 있습니다.
len() 함수를 이용하여 리스트의 길이를 측정하고 0에서 시작하여 리스트 내용물들의 인덱스를 참조하여 처음부터 끝까지 리스트의 아이템들을 순환할 수 있습니다.
한번 반복할 때마다 인덱스를 1씩 올려주는 것을 기억하세요
thislist = ["apple", "banana", "cherry"]
i = 0
while i < len(thislist):
print(thislist[i])
i = i + 1

리스트 작성 표기법을 사용하여 반복하기(Looping Using List Comprehension)
List Comprehension은 리스트를 순환하는데 가장 짧은 구문을 제공합니다.
thislist = ["apple", "banana", "cherry"]
[print(x) for x in thislist]

참고 - List Comprehension(리스트 작성 표기법)은 일부 프로그래밍 언어에서 사용가능한 문법적 구조입니다.
- 위키백과
파이썬 - List Comprehension
List Comprehension
List Comprehension은 당신이 이미 존재하는 리스트의 값들을 기반으로 새로운 리스트를 만들 때 가능한 짧은 구문을 제공해줍니다.
예를 들어
당신이 '과일' 리스트에서 'a'글자가 들어가는 과일들만 포함하는 기반한 새로운 리스트를 원합니다. 이 때 List Comprehension없이는 당신은 for문과 가정문을 사용하여야 합니다.
fruits = ["apple", "banana", "cherry ", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)

이것을 List Comprehension으로는 한줄의 코드로 구현할 수 있습니다.
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)

구문
newlist = [expression for item in iterable if condition == True]
기존의 리스트의 값들을 바꾸지 않으며 반환하는 값은 새로운 리스트입니다.
조건문
조건문은 필터와 같아서 True 라고 평가된 항목들만 허용합니다.
newlist = [x for x in fruits if x != "apple"]

조건문 if x != "apple" 부분은 "apple"이라는 요소만 True 로 평가할 것이며 "apple"을 제외한 모든 요소들을 포함하는 새로운 리스트를 만듭니다.
조건문은 선택적이며 생략될 수 있습니다.
#if문없이 선언한다면
newlist = [x for x in fruits]
Iterable
Iterable은 리스트, 튜플, 셋 등과 같은 반복 가능한 객체입니다.
newlist = [x for x in range(10)]
print(newlist)

같은 예시지만 조건문을 붙여본다면 :
new list = [x for x in range(10) if x < 5]

표현식
표현식은 Iteration에 있는 현재 항목이지만 결과이기도 합니다. 새로운 리스트안의 항목과 같이 끝나기 전에 조작할 수 있습니다.
fruits = ["apple", "banana", "cherry"]
newlist = [x.upper() for x in fruits]
print(newlist)

당신은 당신이 원하는 결과로 설정할 수 있습니다.
# 새로운 리스트의 모든 값에 "hello" 할당하기
fruits = ["apple", "banana", "cherry"]
newlist = ['hello' for x in fruits]
print(newlist)

표현식은 필터같지 않은 조건문을 포함할 수 있지만 결과를 조작하는 하나의 방법입니다.
fruits = ["apple", "banana", "cherry"]
newlist = [x if x != "banana" else "orange" for x in fruits]
print(newlist)

'Python > 공부내용' 카테고리의 다른 글
Python 공부내용 21.09.26. Python - Tuples (0) | 2021.09.26 |
---|---|
Python 공부내용 21.09.26. Python - List 2 (0) | 2021.09.26 |
Python 공부내용 21.09.19. Python - Boolean, 연산자 (0) | 2021.09.19 |
Python 공부내용 21.09.15 Python - Strings (0) | 2021.09.15 |
Python 공부내용 21.09.07 Python - 형변환 (0) | 2021.09.08 |