2017-11-28 1 views
-1

파이썬의 목록은 대괄호 []으로 둘러싸여 있음을 알고 있습니다.이 목록에는 파이썬에 포함 된 내용 또는 목록이 있습니까?

[(451,165,76,-77,[98,42])] 

이 튜플의 목록입니다

나는 다음과 같은 무언가를보고 출력을했다? 우리는 어떻게 항목에 접근 할 수 있습니까?

감사합니다.

+1

정확히 출력은 어디서 발생합니까? 'numpy' 태그를 선택 했으므로 그게 간단하다면 궁금합니다. – Pavel

+1

왜이 태그는'numpy'와'arrays'로 태그되어 있습니까? –

답변

2

그냥 그것을 터미널에서 시도해, 모든 자기 설명이다 : 출력 목록처럼 보인다해서, 어쨌든

>>> x = [(451,165,76,-77,[98,42])] 
>>> type(x) 
<type 'list'> 
>>> x[0] 
(451, 165, 76, -77, [98, 42]) 
>>> x[0][1] 
165 
>>> x[0][4] 
[98, 42] 
>>> type(x[0][4]) 
<type 'list'> 
>>> x[0][4][1] 
42 

, 그것은 필요로하지 않는다 목록으로. 그것은

0

하나의 튜플을 포함하는 목록입니다.이 튜플에는 5 개의 요소가 포함되며 그 중 하나는 테이블입니다. 액세스에

:

a=[(451,165,76,-77,[98,42])] 

a[0][0][2] 

76

a[0][0][4][0] 

이것은 integers로서 처음 네 개의 요소들을 가지는 tuple 마지막 element 함유 list 인 98

2

반환 반환 list2integers입니다. .

indexing에 의해 모든 값에 올바르게 액세스 할 수 있습니다. 다음은 몇 가지 예는 다음과 같습니다

>>> l = [(451,165,76,-77,[98,42])] 
>>> l[0] 
(451, 165, 76, -77, [98, 42]) 
>>> l[0][0] 
451 
>>> l[0][1] 
165 
>>> l[0][3] 
-77 
>>> l[0][4] 
[98, 42] 
>>> l[0][4][0] 
98 
>>> l[0][4][1] 
42 
0

예, 그것은 하나 소자를 포함하는리스트이다 (자세한 내용 https://docs.python.org/3/reference/datamodel.html#object.str 참조) __str__() 또는 __repr__() 과부하에 의해 인쇄 할 방법을 지정하는 더 복잡한 데이터 구조 (일부 사용자 정의 된 클래스의 객체를 할 수있다). 그리고 당신이 정확히 언급했듯이이 요소는 튜플입니다. 이 경우에는 마지막 요소가리스트이기도하기 때문에 튜플이 사용됩니다 (튜플은 이질적인 데이터를 저장하는 데 적합합니다).

2

예, 튜플의 목록입니다.

a[0][0]  #> 451 

을 그리고 튜플의 마지막 항목은 목록은 다음과 같습니다 :

a = [(451,165,76,-77,[98,42])] 
type(a)  #> list 
type(a[0]) #> tuple 

이 같은 튜플의 첫 번째 항목에 액세스 할

a[0][4]  #> [98, 42] 

와의 요소에 액세스 할 수 그 목록에 다른 괄호 레이어를 추가하면됩니다.

a[0][4][0] #> 98 
0

그래서 우리는 데이터를 문자열로 출력 할 때 데이터 형식에 대해서만 추측 할 수 있기 때문에 잠시 후 형식 검사기를 써주었습니다. 우리가 알기로는 str()을 주어진 것으로 선택하는 Person 또는 Frombulate 유형의 객체 일 수 있습니다.기본 파이썬 개체가 귀하의 의견에 제공을 위해,

def type_diver(obj, prefix="", index = ""): 
    print "%s'%s': %s%s" % (prefix, obj, type(obj), " - Accessible via " + index if index else "") 
    if not isinstance(obj, str): 
     try: 
      for ind, elem in enumerate(obj): 
       type_diver(elem, " " * len(prefix) + "|---", index + "[%s]" % ind) 
     except TypeError: 
      pass # Don't call recursively on non-iterable objects 

:

'[(451, 165, 76, -77, [98, 42])]': <type 'list'> 
|---'(451, 165, 76, -77, [98, 42])': <type 'tuple'> - Accessible via [0] 
    |---'451': <type 'int'> - Accessible via [0][0] 
    |---'165': <type 'int'> - Accessible via [0][1] 
    |---'76': <type 'int'> - Accessible via [0][2] 
    |---'-77': <type 'int'> - Accessible via [0][3] 
    |---'[98, 42]': <type 'list'> - Accessible via [0][4] 
     |---'98': <type 'int'> - Accessible via [0][4][0] 
     |---'42': <type 'int'> - Accessible via [0][4][1] 

하지만 str() 출력처럼 보이는 사용자 정의 클래스를 작성할 수 있습니다. 알아야 할 유일한 방법은 물어 보는 것입니다. 데이터가 hpaulj suggested [A NumPy와 배열] 같은 경우

, 당신은 같은 것을 볼 수 있습니다 : 그들은 입력에 관심이있는 다른 개체를해야합니다

'[(451, 165, 76, -77, [98, 42])]': <type 'numpy.ndarray'> 
|---'(451, 165, 76, -77, [98, 42])': <type 'numpy.void'> - Accessible via [0] 
    |---'451': <type 'numpy.int32'> - Accessible via [0][0] 
    |---'165': <type 'numpy.int32'> - Accessible via [0][1] 
    |---'76': <type 'numpy.int32'> - Accessible via [0][2] 
    |---'-77': <type 'numpy.int32'> - Accessible via [0][3] 
    |---'[98 42]': <type 'numpy.ndarray'> - Accessible via [0][4] 
     |---'98': <type 'numpy.int32'> - Accessible via [0][4][0] 
     |---'42': <type 'numpy.int32'> - Accessible via [0][4][1] 

을 감안할 때 모두,이보다 일반적인 솔루션입니다. 그러나 반복 가능한 객체 만 조사합니다.

+0

는'obj = [None]; 실패합니다. obj [0] = obj; type_diver (obj)': P – timgeb

+0

오류 처리를 원하는만큼 추가하십시오. 그것은 그것의 목적을 잘 제공합니다. – TemporalWolf

0

똑바로 앞으로 나오는 파이썬 설명은 정수와 목록을 포함하는 튜플이있는 목록이지만 디스플레이는 numpy 구조화 된 배열과도 일치합니다.

In [596]: dt = np.dtype('i,i,i,i,(2)i') 
In [597]: dt 
Out[597]: dtype([('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4', (2,))]) 

이 목록 입력 된 배열합니다

은 화합물 DTYPE 정의. 복합 dtype (구조화 된 배열)의 데이터는 튜플 목록 형식입니다. 이 배열의

In [598]: arr = np.array([(451,165,76,-77,[98,42])], dtype=dt) 
In [599]: arr 
Out[599]: 
array([(451, 165, 76, -77, [98, 42])], 
     dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4', (2,))]) 

인쇄 그냥 질문과 같습니다 :

In [600]: print(arr) 
[(451, 165, 76, -77, [98, 42])] 

이 5 개 필드 1 개 요소 배열 각 튜플은 배열의 기록 또는 요소의 데이터를 나타냅니다. 마지막 필드는 shape (2,)를 가지며 사실상 2 요소 배열입니다.

In [601]: arr['f4'] 
Out[601]: array([[98, 42]], dtype=int32) 
In [602]: _.shape 
Out[602]: (1, 2) 
+0

이것은 일종의 상황이다. 나는 내 대답에 형식 검사기를 사용할 것이다. 문자열로 출력 할 때 데이터 형식에 대해서만 추측 할 수있다. 나는 당신이 당신의 추측에 맞을 것으로 생각하지만, op 태그가'numpy'라고합니다. – TemporalWolf

관련 문제