<리스트, 튜플 실습: 쇼핑 리스트>
available_parts = ["computer", "monitor", "keyboard",
"mouse", "mouse mat", "hdmi cable"
]
current_choice = "-"
computer_parts = [] #create an empty list
while current_choice != '0':
if current_choice in '1 or 2 or 3 or 4 or 5 or 6':
print("adding {}".format(current_choice))
if current_choice == '1':
computer_parts.append("computer")
print(computer_parts)
elif current_choice == '2':
computer_parts.append("monitor")
print(computer_parts)
elif current_choice == '3':
computer_parts.append("keyboard")
print(computer_parts)
elif current_choice == '4':
computer_parts.append("mouse")
print(computer_parts)
elif current_choice == '5':
computer_parts.append("mouse mat")
elif current_choice == '6':
computer_parts.append("hdmi cable")
else: #(1안)
print("please add options from the list below: ")
for part in available_parts:
print("{0}: {1}".format(available_parts.index(part) + 1, part))
else: #(2안)
print("please add options from the list below: ")
for number, part in enumerate(available_parts):
print("{0}: {1}".format(number + 1, part))
current_choice = input()
print(computer_parts)
<위 코드의 대안책>
available_parts = ["computer", "monitor", "keyboard",
"mouse", "mouse mat", "hdmi cable",
"dvd drive"]
#valid_choices = [str(i) for i in range (1, len(available_parts) +1)]
valid_choices = []
for i in range(1, len(available_parts) + 1):
valid_choices.append(str(i))
print(valid_choices)
current_choice = "-"
computer_parts = []
#create an empty list
while current_choice != '0':
if current_choice in valid_choices:
print("adding {}".format(current_choice))
index = int(current_choice) - 1
chosen_part = available_parts[index]
computer_parts.append(chosen_part)
print(computer_parts)
else:
print("please add options from the list below: ")
for part in available_parts:
print("{0}: {1}".format(available_parts.index(part) + 1, part))
current_choice = input()
향후 더 생각해볼 거리: 만일 리스트 데이터가 중복된다면 새로 리스트에 추가되는 것을 막고, 그에 대한 메세지("해당 아이템을 이미 고르셨습니다") 전송해주기. 추후 시간이 되면 꼭 추가해볼 기능!
even = [2, 4, 6, 8]
odd = [1, 3, 5, 7 ,9]
even.extend(odd)
print(even)
another_even = even
print(another_even)
even.sort()
print(even)
even.sort(reverse=True)
print(id(even))
print(id(another_even))
-sort와 reverse sort 사용법: sort는 새로운 리스트를 복사하거나 만드는 것이 아니고 본리스트를 mutate해서 재정렬하는 것임.
love = "We are the world. We are the children. We are the ones who make the better place."
letter = sorted(love)
print(letter)
numbers = [2.3, 4.5, 8.7, 3.1, 9.2, 1.6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
another_sorted_numbers = numbers.sort()
print(numbers)
print(another_sorted_numbers)
윗 코드 결과값:
1. [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '.', '.', '.', 'W', 'W', 'W', 'a', 'a', 'a', 'a', 'a', 'b', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'h', 'h', 'h', 'h', 'h', 'h', 'i', 'k', 'l', 'l', 'l', 'm', 'n', 'n', 'o', 'o', 'o', 'p', 'r', 'r', 'r', 'r', 'r', 'r', 's', 't', 't', 't', 't', 't', 't', 'w', 'w']
2. [1.6, 2.3, 3.1, 4.5, 8.7, 9.2]
3. [1.6, 2.3, 3.1, 4.5, 8.7, 9.2]
4. None
1: sorted(love)를 통해서 sorted 함수는 특수기호, 대문자, 소문자 알파벳 순으로 정렬한다는 것을 확인함
2: sorted(numbers)를 통해서 해당 리스트를 오름차순 정렬후 출력함.
3: 해당 리스트를 numbers.sort() (행동 메소드)를 통해서 재정렬한 후 출력함.
4: 2번과 3번의 차이점은; sorted(numbers)와 numbers.sort()의 차이점은; 전자는 (numbers)라는 인자값을 넣어줘서 print시 리턴값이 있지만 후자는 sort() 안에 아무 인자값이 없어서 print시 none 값이 나오게됨. 후자는 그저 주어진 행위(정렬하기)만 했음을 의미함.