값 대신 색인을 넣어 리스트의 개체를 지우는 방법입니다. pop() 메소드와 반환되는 값에서 차이가 있습니다. del 구문은 리스트에서 조각을 없애거나 리스트 전체를 지울 때 사용합니다.
n = [1, 2,3,4,5,6,7,8,9,10]
del n[0]
print(n)
del n[0:3]
print(n)
del n[:]
print(n)
[2, 3, 4, 5, 6, 7, 8, 9, 10]
[5, 6, 7, 8, 9, 10]
[]
del은 모든 변수를 지우는 데도 사용할 수 있습니다.
n=1
del n
print(n)
NameError: name 'n' is not defined
2. 튜플과 시퀀스 (Tuples and Sequences)
우리는 리스트와 스트링이 색인이나 쪼개기 같은 많은 공통적인 속성이 있음을 봤습니다. 또한 표준 시퀀스 데이터 타입으로 tuple이 있습니다. 튜플은 컴마로 구분된 숫자값들로 구성되어 있습니다.
a = 1, 12, 123, 1234, 'number'
print(a)
b = a, ('one', 'two', 'three')
print(b)
print(a[0])
print(b[0])
c = ([1,2,3], ['one','two','three'])
print(c)
(1, 12, 123, 1234, 'number')
((1, 12, 123, 1234, 'number'), ('one', 'two', 'three'))
1
(1, 12, 123, 1234, 'number')
([1, 2, 3], ['one', 'two', 'three'])
당신이 보듯이, 튜플 결과값은 항상 소괄호로 묶여 있습니다. 따라서 묶인 튜플들은 곧바로 해석됩니다. (튜플이 큰 표현식의 부분이라도) 괄호가 필요하다 해도 소괄호로 감싸져 있거나, 혹은 아닌 채로 값이 입력됩니다. 튜플의 개체를 할당하는 것은 불가능하지만 list와 같은 여러 객체들을 엮어서 튜플은 만드는 것은 가능합니다.
튜플은 list와 매우 비슷하지만 리스트와는 다른 상황, 다른 목적으로 사용됩니다. 튜플들은 변경이 불가능하며, 감싸지지 않거나 색인된 요소들의 이질적인 시퀀스를 포함합니다. 리스트는 별경이 가능하고 요소들은 보통 동종의 것이며 리스트를 반복하여 접근할 수 있습니다.
0개나 1개의 개체를 가진 튜플의 구조는 특별한 문제를 발생시킵니다. 이것을 처리하기 위한 몇가지 방법이 있습니다. 빈 튜플은 빈 괄호쌍으로 구성됩니다. 1개의 개체를 가진 튜플은 값 뒤에 컴마를 붙이는 형태를 가집니다. (단일 값을 괄호로 묶는 것만으로는 충분하지 않습니다.)
>>> single = 'hello',
>>> len(single)
1
>>> single
('hello',)
a = 1, 2, 3, 'number'은 튜플 패킹의 예시입니다. 값 1, 2, 3, number는 튜플로 서로 엮어 있습니다. 반대의 기능도 가능합니다.
>>> a,b,c = team
이것은 언패킹 시퀀스(unpacking sequence)라고 불리며, 오른쪽의 어떤 시퀀스에도 적용됩니다. 시퀀스를 풀려면 시퀀스의 요소 만큼 등호 기호의 왼쪽에 많은 변수가 있어야 합니다. 다중 할당은 실제로 튜플 패킹과 시퀀스 언패킹의 조합입니다.
세트는 중복되지 않는 값들의 순서없는 모임입니다. 기본적인 용도에는 멤버쉽 테스트와 중복항목 제거가 포합됩니다. 세트 객체는 또한 합집합, 교차, 차이, 대칭 차이 등과 같은 수학적 기능도 지원합니다.
중괄호나 set() 함수는 세트를 만드는데 사용됩니다. 참고 : 빈 세트를 만들기 위해선 {}가 아닌 set() 함수를 써야 합니다. {}는 빈 딕셔너리를 만듭니다.
fruit = {'사과', '바나나', '배'}
print(fruit)
print('사과' in fruit)
print('고구마' in fruit)
a = set('abcde')
b = set('abcdefg')
print(a)
print(b)
print(b-a)
print(a|b) #합집합
print(a&b) #교집합
print(b^a) #차집합
{'사과', '배', '바나나'}
True
False
{'b', 'a', 'e', 'c', 'd'}
{'b', 'a', 'e', 'g', 'c', 'd', 'f'}
{'f', 'g'}
{'b', 'a', 'e', 'g', 'c', 'd', 'f'}
{'b', 'a', 'e', 'c', 'd'}
{'g', 'f'}
복합 리스트에서도 비슷하게 쓰입니다.
a = {i for i in 'abcdefg' if i not in 'abc'}
print(a)
{'d', 'f', 'g', 'e'}