>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2
둘 모두 유효합니까? 어떤 이유로 든 하나가 선호됩니까?파이썬에서 대괄호와 괄호로 묶인 목록의 차이점은 무엇입니까?
>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2
둘 모두 유효합니까? 어떤 이유로 든 하나가 선호됩니까?파이썬에서 대괄호와 괄호로 묶인 목록의 차이점은 무엇입니까?
대괄호는 tuples입니다. 대괄호는 lists이며 괄호는 tuples입니다. 튜플이없는 동안
>>> x = [1,2]
>>> x.append(3)
>>> x
[1, 2, 3]
:
목록은 당신이 그 내용을 변경할 수 있습니다 의미, 변경 가능한
>>> x = (1,2)
>>> x
(1, 2)
>>> x.append(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
다른 주요 차이점은 튜플은 당신이 할 수있는 것을 의미 해쉬 때문이다 사전에 키로 사용하십시오. 예를 들어 많은 사람들이 지적 것을
>>> x = (1,2)
>>> y = [1,2]
>>> z = {}
>>> z[x] = 3
>>> z
{(1, 2): 3}
>>> z[y] = 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
주, 당신은 함께 튜플을 추가 할 수 있습니다. 예를 들어 :
그러나>>> x = (1,2)
>>> x += (3,)
>>> x
(1, 2, 3)
, 이 튜플 변경할 수 있습니다 의미하지 않는다. 위의 예제에서, 새로운 튜플은 두 개의 튜플을 인수로 추가하여 생성됩니다. 원래 튜플은 수정되지 않습니다. 이를 설명하기 위해, 다음 사항을 고려 반면
>>> x = (1,2)
>>> y = x
>>> x += (3,)
>>> x
(1, 2, 3)
>>> y
(1, 2)
을, 당신은 목록이 같은 예를 구성한다면, y
도 업데이트 될 것입니다 :
>>> x = [1, 2]
>>> y = x
>>> x += [3]
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
사실 우리는'(1,2) + (3,) # (1,2,3)'또는'(1,2) + (3,4) # (1,2, 3,4)'그러나 우리는 사물을 수정할 수 없다. –
@AlexisPaques - 원래 튜플이 수정되지 않았으므로 실제로 추가되지 않습니다. 두 개의 기존 튜플을 더한 결과로 * 새 튜플을 생성합니다. – jterrace
사실, 당신 말이 맞습니다. 내 실수 –
첫 번째 목록은 두 번째 튜플입니다. 리스트는 변경 가능하고, 튜플은 변경 가능하지 않습니다.
자습서의 Data Structures 섹션과 설명서의 Sequence Types 섹션을 살펴보십시오.
이들은 목록이 아니며 목록과 튜플입니다. 파이썬 튜토리얼에서 약 tuples을 읽을 수 있습니다. 목록을 변형 할 수는 있지만 튜플에서는 불가능합니다. (
및 )
둘러싸인
In [1]: x = (1, 2)
In [2]: x[0] = 3
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/user/<ipython console> in <module>()
TypeError: 'tuple' object does not support item assignment
쉼표로 구분 항목 tuple
S이다 [
및 ]
둘러싸인들은 list
S이다.
"둥근"괄호로 묶인 목록이 없습니다.이 목록은 튜플입니다! 그러나 아마도 당신은 옳은 것을 의미 할 것입니다. ': P' – Gandaro
_ (와)로 묶인리스트는 튜플입니다. .. 나는 목록이나 튜플이 헷갈 렸습니다. – juliomalegria
@ julio.alegria @FlopCoder가 쓰려고했던 것은 "** ('과')로 묶인 항목은'튜플 '이고,'['와']로 묶인 항목은'list's . " – funroll
대괄호와 괄호가 다른 또 다른 방법은 대괄호가 목록 내포를 설명 할 수 있다는 것입니다. 해당 괄호로 구문 반면 [x for x in y]
는 튜플 발전기을 지정 (x for x in y)
다음을 사용하여 튜플의 이해를 얻을 수 있습니다 : tuple(x for x in y)
이
한 가지 흥미로운 차이점 가치가 눈여겨볼 때입니다 하나의 값만 존재합니다.
lst=[1]
print lst // prints [1]
print type(lst) // prints <type 'list'>
notATuple=(1)
print notATuple // prints 1
print type(notATuple) // prints <type 'int'>
^^
쉼표는 단일 값만 포함되어 있어도 튜플에 포함되어야합니다. 예 : (1)
대신 (1,)
입니다.
FYI : '(i for i in ...)'와 '[i for i in ...]'사이에는 더 큰 차이가 있습니다. –
@RikPoggi 중대한 차이점은 무엇입니까? 정교하게 제발 주시겠습니까? – qazwsx
첫 번째 것은 ** 생성기 표현식 **이고 두 번째 것은 ** 목록 이해력 **입니다. 여기에 몇 가지 정보가 있습니다 : [목록 이해력에 대한 공식 자습서] (http://docs.python.org/py3k/tutorial/datastructures.html#list-comprehensions), [PEP 289] (http : //www.python .org/dev/peps/pep-0289 /). 그리고 여기에 몇 가지 운영 체제 질문 : [발전기 표현 대 목록 이해] (http://stackoverflow.com/questions/47789/generator-expressions-vs-list-comprehension), [발전기 - 이해력] (http : // stackoverflow .com/questions/364802/generator-comprehension). –