yangbongsoo / blockStudy

1 stars 0 forks source link

python-list #25

Closed yangbongsoo closed 1 year ago

yangbongsoo commented 1 year ago
# TODO: 리스트 만드는 방법 두가지 시험에 나옴
c = list()
d = []

intL = [4, 1, 8, 6]
mixed = [1, 2.2, "Mickey", "민수", [8, 4, "Python"]]

NintL = len(intL)
print(NintL, len(mixed))
print(intL[0], mixed[1], mixed[4])
print(mixed[4][0], mixed[4][1])
print(mixed[4][2], mixed[4][2][0])

# TODO: List slicing 답 적을 때, 꼭 리스트라는거 표현해야함 즉 답이 0,2,4 라면 [0,2,4] 이렇게 대괄호 적어줘야해
# TODO: List slicing 답 적을 때, 꼭 리스트라는거 표현해야함 즉 원소가 없어도 빈 리스트 [] 로 표현해야함
a = [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(a[4:4])  # 중요
print(a[4:1:1])  # 중요. 답 에러 아님 빈 리스트임.
print(a[4:5])
print(a[4])  # 리스트가 아닌 원소가 나옴. 습관적으로 답이 모두 리스트일거란 생각하면 안돼

print(a[::-1])  # step 이 음수니까, 뒤집어 진다는거 잘 알아라.

print(a[5::-2])  # 중요
print(a[1:4:-1])  # 중요. 에러 아님. 빈 리스트
print(a[16:12:-2])  # 중요. 에러 아님. 범위밖이다. 빈 리스트.

# TODO: slicing 을 이용한 리스트 원소 제거/교체/추가 p8 ~ p11 시험에 100% 나온다.
a[1:3] = []
a[1:3] = [1]
a[1] = ['a', 'b']  # a[1] 의 값을 list ['a', 'b'] 로 수정. 결과 : [0, ['a', 'b'], 2, 3, 4]
a[1:2] = ['a', 'b', 'c']  # a[1] 값 1 대신 'a', 'b', 'c' 으로 대체. 결과 : [0, ’a’, ’b’, ’c’, 2, 3, 4]

# 복사1
A = ['ab', 'cd', 'ef']
B = A
print(id(A), id(B))
B[1] = 10
print(A, B)

# 복사2
A = ['ab', 'cd', 'ef']
B = A[:]  # 슬라이싱 자체가 새로운 리스트를 만드는거다. 내부적으로(B = A.copy()) 근데 그래도 이 방식으로 복사 사용하면 안돼. 수정할때 문제가 생길수 있어. p14(원소가 리스트인 경우)
print(id(A), id(B))
B[2] = 10
print(A, B)

L = [1, 2, 3, 4]
L.append(5)
print(L)
L.insert(2, 10)  # 2 index 에 10 추가
print(L)
print(L.pop())  # 마지막 원소 제거 및 그값 반환
print(L)
print(L.pop(2))  # 2 index 제거 및 그값 반환
print(L)
L.remove(3)

A = ['red', 'blue', 'yellow']
del A[:]
print(A)
del A
# print(A)

# TODO: x.sort() 중요
x = [1, 2, 3, 4]
x.sort(reverse=True)  # 내림차순 정렬. 반환값이 없어.
print(x)

L = [1, 5, 3]
M = [19, 2]
r1 = L + M  # 이거는 새로운 리스트를 리턴함 extend 와 차이가 있다.
print(r1)
L.extend(M)
print(L)

print(sorted(x, reverse=True))  # x는 그대로 있고 정렬된 리스트를 새롭게 반환하는것임

e = list(enumerate(x))  # 인덱스까지 데이터로 활용. 튜플 생성됌
print(e)

problem1

# 인덱싱을 사용하여 리스트 L 의 원소 리스트의 원소들을 제곱하여 그 합을 구하라

# 제곱의 합들은 새로운 리스트에 저장하여 출력
# 새로운 리스트에 저장할 때는 슬라이싱을 사용해라
L = [[1, 2, 3], [4, 5], [6], [7, 8]]
M = []

M[0:0] = [pow(L[0][0], 2) + pow(L[0][1], 2) + pow(L[0][2], 2)]
M[1:1] = [pow(L[1][0], 2) + pow(L[1][1], 2)]
M[2:2] = [pow(L[2][0], 2)]
M[3:3] = [pow(L[3][0], 2) + pow(L[3][1], 2)]

print(M)

problem2

# 리스트 method 중 append 를 사용하여 아래의 조건을 만족
# L = [1,2,3,4,5] 에 새로 추가할 원소를 입력 받을 것
# 추가할 원소의 데이터형은 정수로 제한

L = [1, 2, 3, 4, 5]
try:
    data = int(input("리스트 L에 추가할 data를 입력 : "))
    L.append(int(data))
    print(L)
except:
    ""

problem3

# 리스트 L 원소들을 이용하여 다음과 같이 출력해라
L = ['as', 'sogang', 'Be', 'is', 'proud', 'of', 'you']

print(
    L[2] + " " + L[0] + " " + L[4] + " " + L[5] + " " + L[1] + " " + L[0] + " " +
    L[1] + " " + L[3] + " " + L[4] + " " + L[5] + " " + L[6]
)

problem4

# 두 리스트를 합쳐서 출력해라
A = [1, 2, 3]
B = [5, 6]

# 첫번째 출력은 + 를 사용하고
print("+를 사용: {}".format(A + B))

# 두번째 출력은 extend() 리스트 메서드를 사용해라
A.extend(B)
print("extend()를 사용: {}".format(A))