List & Tuple : an ordered collection of objects
realpython
>>> [1, 2, 3, 4] == [4, 1, 3, 2]
False
[21.42, 'foobar', 3, 4, 'bark', False, 3.14159]
>>> a = [int, len, foo, math]
>>> a
[<class 'int'>, <built-in function len>, <function foo at 0x02CA2618>,
<module 'math' (built-in)>]
: to accessing individual characters in a string
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> print(a[2:], a[2:len(a)])
['baz', 'qux', 'quux', 'corge'] ['baz', 'qux', 'quux', 'corge']
>>> a[0:6:2]
['foo', 'baz', 'quux']
>>> a[1:6:2]
['bar', 'qux', 'corge']
>>> a[6:0:-2]
['corge', 'qux', 'bar']
>>> a[::-1]
['corge', 'quux', 'qux', 'baz', 'bar', 'foo']
>>> 'If Comrade Napoleon says it, it must be right.'[::-1]
'.thgir eb tsum ti ,ti syas noelopaN edarmoC fI'
>>> s = 'foobar'
>>> s[:]
'foobar'
>>> s[:] is s
True
: Conversely, if a is a list, a[:] returns a new object that is a copy of a:
>>> a[:]
['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[:] is a
False
## in/not in
>>> a
['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> 'qux' in a
True
>>> 'thud' not in a
True
## concatenation(+) ,replication(*)
>>> a + ['grault', 'garply']
['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'grault', 'garply']
>>> a * 2
['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'foo', 'bar', 'baz',
'qux', 'quux', 'corge']
## The len(), min(), and max() functions:
>>> len(a)
6
>>> min(a)
'bar'
>>> max(a)
'qux'
>>> x = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', ['hh', 'ii'], 'j']
>>> x[1]
['bb', ['ccc', 'ddd'], 'ee', 'ff']
>>> x[1][1]
['ccc', 'ddd']
>>> print(x[3][0], x[3][1])
hh ii
>>> x[1][1:3]
[['ccc', 'ddd'], 'ee']
>>> x[3][::-1]
['ii', 'hh']
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[2] = 10
>>> a[-1] = 20
>>> a
['foo', 'bar', 10, 'qux', 'quux', 20]
>>> del a[3]
>>> a
['foo', 'bar', 'baz', 'quux', 'corge']
>>> a = [1, 2, 3]
>>> a[1:2] = [2.1, 2.2, 2.3]
>>> a
[1, 2.1, 2.2, 2.3, 3]
>>> a = [1, 2, 3]
>>> a[1] = [2.1, 2.2, 2.3]
>>> a
[1, [2.1, 2.2, 2.3], 3]
>>> a = [1, 2, 7, 8]
>>> a[2:2] = [3, 4, 5, 6]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a[1:5] = []
>>> a
['foo', 'corge']
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> del a[1:5]
>>> a
['foo', 'corge']
>>> a += ['grault', 'garply']
>>> a
['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'grault', 'garply']
>>> a = [10, 20] + a
>>> a
[10, 20, 'foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a += 'corge'
>>> a
['foo', 'bar', 'baz', 'qux', 'quux', 'c', 'o', 'r', 'g', 'e']
a = ['a', 'b']
>>> a.append(123)
>>> a
['a', 'b', 123]
>>> x = a.append(123)
>>> print(x)
None
>>> a
['a', 'b', 123]
>>> a = ['a', 'b']
>>> a + [1, 2, 3]
['a', 'b', 1, 2, 3]
>>> a.append([1, 2, 3])
>>> a
['a', 'b', [1, 2, 3]]
# Thus, with .append(), you can append a string as a single entity:
>>> a.append('foo')
>>> a
['a', 'b', 'foo']
>>> a.extend([1, 2, 3])
>>> a
['a', 'b', 1, 2, 3]
>>> a += [1, 2, 3]
>>> a
['a', 'b', 1, 2, 3]
>>> a.insert(3, 3.14159)
>>> a[3]
3.14159
>>> a
['foo', 'bar', 'baz', 3.14159, 'qux', 'quux', 'corge']
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a.remove('baz')
>>> a
['foo', 'bar', 'qux', 'quux', 'corge']
>>> a = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge']
>>> a.pop()
'corge'
>>> a
['foo', 'bar', 'baz', 'qux', 'quux']
>>> a.pop()
'quux'
>>> a
['foo', 'bar', 'baz', 'qux']
: When items are added to a list, it grows as needed
>>> a[2:2] = [1, 2, 3]
>>> a += [3.14159]
>>> a
['foo', 'bar', 1, 2, 3, 'baz', 'qux', 'quux', 'corge', 3.14159]
>>> a[2:3] = []
>>> del a[0]
>>> a
['bar', 'qux', 'quux', 'corge']
: 튜플은 아래 2가지만 빼고 List와 동일하다.
List 대신 Tuple 을 사용하는 이유
- 튜플이 리스트보다 프로그램 실행이 더 빠르다. (리스트나 튜플의 크기가 클 때)
- 데이터 수정을 원하지 않는 경우. 컬렉션의 값이 프로그램을 실행하는 동안 데이터 값이 일정하게 유지 되도록 하며 우발적인 수정을 방지할 수 있습니다.
- 또 다른 파이썬 데이터 유형 dictionary의 구성요소 중 KEY는 불변의 값을 필요로합니다. 이 목적으로 튜플을 사용할 수 있지만 리스트는 사용할 수 없습니다.
: 튜플은 [ ]대신 괄호(parentheses)를 사용하지만, string, list와 마찬가지로 인덱스와 슬라이스를 사용할 수 있다.
>>> t = ('foo', 'bar', 'baz', 'qux', 'quux', 'corge')
>>> t[0]
'foo'
>>> t[-1]
'corge'
>>> t[1::2]
('bar', 'qux', 'corge')
>>> t[::-1]
('corge', 'quux', 'qux', 'baz', 'bar', 'foo')
>>> t = (2)
>>> type(t)
<class 'int'>
>>> t = (2,)
>>> type(t)
<class 'tuple'>
>>> t[0]
2
>>> t[-1]
2
>>> t = ('foo', 'bar', 'baz', 'qux')
>>> t
('foo', 'bar', 'baz', 'qux')
>>> t[0]
'foo'
>>> t[-1]
'qux'
>>> (s1, s2, s3, s4) = t
>>> s1
'foo'
>>> s2
'bar'
>>> s3
'baz'
>>> s4
'qux'
다차원 리스트는 게입개발, 대규모 머신러닝 알고리즘에서 사용된다