# List

## List

중학교 수학책 가장 처음에 나오는 집합을 기억하시죠? \
특정 값들의 묶음을 리스트(List)라고 생각하시면 됩니다. \
리스트는 내가 원하는 것들을 묶어두고 필요할 때 추가, 삭제, 읽기, 수정이 가능합니다.

## 만들기

```python
list = [1, 5, 3, 6]
stringList = ['Hi', 'Hello', 'Hey']
combineList = [1, 'Hello', 3, 'Hi']
inList = [1, 3, ['Hi', 'Hello']]
```

리스트는 대괄호(\[ ])를 사용하고 내부 요소들은 쉼표(,)를 이용해 구분하게 됩니다.

## 사용하기

### 읽기

#### 전체 값 출력

```
list = [1, 5, 3, 6]
print(list)
```

#### 특정 위치의 값&#x20;

```
list = [1, 5, 3, 6]
print(list[1])
```

list의 1번째 값을 출력하도록 했습니다.\
결과는 5가 출력됩니다. 왜 그런지 알아보죠. \
리스트는 아래와 같은 구성으로 되어있습니다.

| list의 값          | 1  | 5  | 3  | 6  |
| ---------------- | -- | -- | -- | -- |
| 순서               | 1번 | 2번 | 3번 | 4번 |
| 인덱스 or 포지션 or 위치 | 0  | 1  | 2  | 3  |
| 마이너스 인덱스         | -4 | -3 | -2 | -1 |

list\[인덱스]를 사용하게 되면 list의 인덱스 위치의 값이 반환됩니다.\
list\[1]의 값을 출력했을 때 위치 1번이 아닌 인덱스 1 위치의 5값이 출력됩니다.

```python
list = [1, 5, 3, 6]
print(list[-1])
```

인덱스는 -(마이너스) 값을 사용할 수 있습니다.\
위의 결과는 6이 출력됩니다.

#### 여려 값 동시에 가져오기

```python
list = [1, 5, 3, 6]
print(list[2:4])
```

여러 값을 가져오기 위해서 \[2:4]라고 적었습니다.\
2시작 지점의 인덱스 (2 이상) : 4 끝점의 인덱스(4 미만)\
2, 3 인덱스의 값을 가져오게 됩니다.

```python
list = [1, 5, 3, 6]
print(list[2:])
```

앞서 내용과 다른점은 2: 이후 어디까지 인지 위치 값이 없습니다. \
2 이상 끝까지 값을 가져옵니다.

```python
list = [1, 5, 3, 6]
print(list[:2])
```

설명 안해도 느낌 오죠?

### 수정

```
list = [1, 5, 3, 6]
list[0] = 10
print(list)
```

02  list의 0번째 값을 10으로 변경

리스트의 첫 번째 값이 10으로 변경된것을 확인할 수 있습니다.\
리스트의 값을 어려개 가져올수 있는 것처럼 어려개를 동시에 변경할 수 있습니다.

```
list = [1, 5, 3, 6]
list[0:2] = [10, 50]
print(list)
```

02  리스트의 0, 1번 째 값을 10, 50 으로 변경

\[0:2]는 0 이상 2 미만의 위치라고 이야기 드렸죠.\
그럼 우리는 0번과 1번의 값을 10, 50으로 변경하게 됩니다.

#### !!조심할점

```python
list = [1, 5, 3, 6]
list[0:2] = [10, 50, 40, 60]
print(list)
```

출력을 해보면 예상과 다르게 나올것 입니다.\
0\~1번 째까지는 값이 변경되고 이후 값은 추가가 됩니다.\
어려개를 변경할 때는 인덱스와 추가하는 값을 잘 확인하셔야 합니다.!!

### 추가

추가는 List에 만들어져 있는 append, insert 함수를 이용합니다.

#### 젤 뒤에 추가

```python
list = [1, 5, 3, 6]
list.append(8)
print(list)
```

#### 원하는 위치에 추가

지금까지 1,5, 3, 6 의 리스트를 사용해왔습니다. 5, 3 사이에 4 값을 추가하겠습니다.

```python
list = [1, 5, 3, 6]
list.insert(2, 4)
print(list)
```

02  insert 함수는 insert(인덱스, 값) 으로 구성됩니다.

5와 3 사이는 인덱스 1, 2 입니다. \
5와 3사이에 4값을 추가 하기위해서는 인덱스 2번에 4 값을 추가해야 겠죠.&#x20;

### 삭제

#### 위치 값 이용

원하는 위치의 값을 삭제합니다.\
젤 처음 1의 값을 삭제하겠습니다.

```python
list = [1, 5, 3, 6]
del list[0]
print(list)
```

02  del list\[0]  del 명령어를 이용해 list의 0번째 값을 삭제 했습니다.

#### 요소 값 이용

3번 값을 삭제하고 싶은데 리스트가 아주 길다면 눈으로 위치를 찾는거는 쉽지 않을 것 입니다.\
이때 사용할 수 있습니다.

```python
list = [1, 5, 3, 6]
list.remove(3)
print(list)
```

02  list 내부 값 중에 3을 삭제\
만약에 리스트에 3값이 어려개가 있는 경우 첫 번째 것만 삭제 됩니다.

```python
list = [1, 5, 3, 6, 3]
list.remove(3)
print(list)
```

## 알아두면 편한 함수

#### 갯수 구하기

```python
list = [1, 5, 3, 6, 3]
print(len(list))
```

#### 값의 위치 가져오기

```python
list = [1, 5, 3, 6, 3]
print(list.index(3))
```

#### 정렬(Sort)

```python
list = [1, 5, 3, 6, 3]
list.sort()
print(list)
```

#### 역순정렬

```python
list = [1, 5, 3, 6, 3]
list.sort(reverse=True)
print(list)
```

#### 역순 (Reverse)

```python
list = [1, 5, 3, 6, 3]
list.reverse()
print(list)
```

#### 값을 가져오며 삭제하기

```python
list = [1, 5, 3, 6, 3]
popValue = list.pop()
print(popValue)
print(list)
```

02  리스트 제일 뒤 값을 가져오며 리스트에서 삭제한다.

```python
list = [1, 5, 3, 6, 3]
popValue = list.pop(0)
print(popValue)
print(list)
```

02  리스트의 제일 처음 값을 가져오며 리스트에서 삭제한다.

#### 리스트 합치기

```python
list = [1, 5, 3, 6, 3]
listExtends = ['hi', 'hello']
list.extend(listExtends)
print(list)
```

## 문

예제 1\
다음과 같은 리스트가 있다.

```python
list = [1, 3, 5, 7, 9, 11]
```

리스트를 이용해서 값 1을 구하세요. 몇 가지 방법이 있을까요?

{% code title="참고 코드" %}

```python
list = [1, 3, 5, 7, 9, 11]
print(list[0])
print(list[3] - list[0] - list[0])
print(list[4] - list[1] + list[2])
```

{% endcode %}

예제2\
다음과 같은 리스트가 있다.

```
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8]
```

1,2,3,4,5,6,7,8,9 를 출력하세요. 가능한 많은 방법을 찾아보세요.

{% code title="참고 코드" %}

```python
list1 = [1, 3, 5, 7, 9]
list2 = [2, 4, 6, 8]

list3 = list1 + list2
list3.sort()
print(list3)

list1.extend(list2)
list1.sort()
print(list1)

list3 = []
list3.append(list1[0])
list3.append(list2[0])
list3.append(list1[1])
list3.append(list2[1])
list3.append(list1[2])
list3.append(list2[2])
print(list3)

```

{% endcode %}

예제3\
어느 식당에 갔다. \
음식을 주문하려고 메뉴판을 보니

| T1 | 소고기 쌀국수   | 7,000원  |
| -- | --------- | ------- |
| T2 | 소고기 매운쌀국수 | 7,500원  |
| P1 | 파인애플 볶음밥  | 8,000원  |
| P2 | 해물볶음면     | 8,500원  |
| Q1 | 월남쌈       | 12,000원 |

주문을 T1, P2을 했을 때 총 가격은 얼마인가요? \
주문은 다양하게 변화 할 수 있습니다.

{% code title="참고 코드" %}

```python
#입력받는다.
user_order = input('주문 하세요.')
if(user_order == 'Menu') :
    print("T1, 소고기 쌀국수     7,000원")
    print("T2, 소고기 매운쌀국수  7,000원")
    print("P1, 파인애플 볶음밥   7,000원")
    print("P1, 해물볶음면       7,000원")
    print("Q1, 월남쌈          7,000원")
    user_order = input('주문 하세요.')
# "T1,P1,q1" 문자열
#입력받은 것을 자른다(,)
orders = user_order.lower().split(',')
#[t1, p1, q1]
#입력받은 주문이 몇개인지 확인한다.
count = len(orders);
#3
#입력받은 주문의 가격이 얼마인지 구한다.
price = [7000, 7500, 8000, 8500, 12000]
menu = ['t1', 't2', 'p1', 'p2', 'q1']
#주문의 가격을 모두 더한다.
if(count == 1) :
    price_pos = menu.index(orders[0])
    print(price[price_pos])
elif(count == 2):
    price_pos = menu.index(orders[0])
    price_pos1 = menu.index(orders[1])
    print(price[price_pos] + price[price_pos1])
elif(count == 3):
    price_pos = menu.index(orders[0])
    price_pos1 = menu.index(orders[1])
    price_pos2 = menu.index(orders[2])
    print(price[price_pos] + price[price_pos1]+ price[price_pos2])
else:
    print('1111')
```

{% endcode %}

예제 4\
입력값 0이 아닌 경우 내용을 계속 입력받고, 0을 입력하면 이전 입력값을 하나식 보여주도록 하세요.\
999입력 시 종료, 998 입력 시 남아있 값 출력\
ex) 사용자 입력 \
\>> 1\
\>> 123\
\>> 23\
\>> 4\
\>> 234\
\>>*0*\
\&#xNAN;*234*\
\>>0\
4\
\>>55555\
\>>0\
55555\
\>>0\
23

{% code title="참고 코드" %}

```python
# -*- coding: UTF-8 -*-
tong = []
while True:
    userInput = input('숫자를 입력해주세요!!! (0: 이전 값 출력, 998:전체 출력, 999: 종료) : ')
    if(not userInput.isnumeric()):
        print('숫자만 입력해주세요!!')
        continue
    userInput = int(userInput)
    if(userInput == 0):  
        if(not tong):
            print('데이터가 없습니다.')
            continue
        popValue = tong.pop()
        print(popValue)
    elif(userInput == 998):
        print(tong)
    elif(userInput == 999):
        print('종료합니다 !!')
        break;
    else:
        tong.append(userInput)
        print(tong[(len(tong)-1)])


```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://study-code.gitbook.io/python-basic/undefined-1/undefined-5.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
