2017-11-17 11 views
0

필자는 필자의 코딩에서 튜플들의 목록이 정확한 방식 대신 수직으로 인쇄되는데 오류가 있다고 생각한다. 누군가가 나에게 말해 줄 수 있을까?내 튜플 목록이 왜 수직적입니까?

질문하는 중입니다 : 열거하십시오! 시퀀스를 취하여 인덱스와 관련 항목이있는 각 튜플과 함께 2- 튜플 목록을 반환하는 enum이라는 함수를 작성합니다.

이 주어진 예이다

>>> enum([45,67,23,34,88,12,90]) 
[(0, 45), (1, 67), (2, 23), (3, 34), (4, 88), (5, 12), (6, 90)] 

>> enum('hello') 
[(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o')] 

이것은 내 코드 :

def enum(aSequence): 
    for i in range(7): 
     b=aSequence[i] 
     a= [i] 
     list1 = [a,b] 
     print (list1) 


If following the example input is used this is the result: 
[[0], 45] 
[[1], 67] 
[[2], 23] 
[[3], 34] 
[[4], 88] 
[[5], 12] 
[[6], 90] 

I 원하는 것 인 결과이다 [(0, 45), (1, 67), (2, 23), (3, 34), (4,88), (5,12), (6,90)]

인쇄물을 지우고 list1 대신 return1을 사용하면 결과.

[[0], 13] 

왜 이런 경우입니까?

내가 튜터중인 웹 사이트에 이것을 넣으면 "Jack and Jane"이라는 단어가 표시되고 다른 테스트를하면 난수가 표시됩니다. 두 번째 질문은 매개 변수 입력을 기반으로 범위 루프를 얻는 방법입니다. 수학을 가져 와서 무작위로 가져 오려고했습니다. 둘 다 단기적인 해결책이지만 장기적인 해결책은 아닙니다.

코드가 기본 기초가 누락 될 수 있으므로 문제를 너무 과장하고있는 것 같습니다.

답변

1

이이 같은 라인이 결과

를 원하기 때문에

for i in range(len(aSequence)): 
    b=aSequence[i] 
    a= i 
    list1 = [a,b] 
    print (list1,end=' ') 

모든 것을 인쇄해야하는 것입니다

[(0, 45), (1, 67), (2, 23), (3,34), (4,88), (5,12), (6,90)]

+0

이것은 (인쇄 기능이 __future__에서 수입하지 않는 한) python3에서만 작동합니다 ... 당신이 원하는 것을 예를 들어 기능, 그리고 그는 버전을 지정하지 않았다 . – Nf4r

+0

@ Nf4r, 오, 알았어. 내가 파이썬이라고 가정 했어 .3 –

1

거의 틀림 없습니다. 문제는 a=[i]입니다. [] 대괄호를 사용하면 목록을 만들므로 a이 int가 아닌 목록입니다. a=i으로 변경하면 문제가되지 않습니다. 또한 range(7)으로 하드 코딩 된 내용은 range(len(aSequence))으로 변경해야합니다.

def enum(aSequence): 
    result = [] 
    for i in range(len(aSequence)): 
     result.append((i, aSequence[i])) 
    return result 

는 당신이 기억해야하는 것은 printreturn 아니라고, 사실이다 : 당신을위한 이상적인 솔루션은 무언가 같이 될 것입니다.

1

이렇게해야합니다. 당신은 너무 그것에 대해 조심, 문제는 반환 원하는 구조의 목록을 요청

def enum(aSequence): 
    list1 = [] 
    for i in range(len(aSequence)): 
     b = aSequence[i] 
     a = i 
     list1.append((a,b)) 
    print list1 

enum([45,67,23,34,88,12,90]) 
1

아래처럼 loop.Just를 시작하기 전에 목록을 작성해야합니다. 지금 바로 인쇄 중입니다.

def enum(aSequence): 
    list1 = [] 
    for i in range(len(aSequence)): 
     b = aSequence[i] 
     a = i 
     # use append to keep your items in the list to be returned 
     list1.append((a, b)) 
    return list1 

print(enum('hello')) # this should print horizontally like you asked. 

원하는 목록을 만드는 가장 간단한 방법은 열거 기능을 사용하는 것입니다. 열거 함수는 인덱스의 튜플과 인덱스에서 발견 된 객체의 반복자에 대한 압축을 풉니 다. 그래서 여기

thing = 'hello there!' 

#typical use case for enumerate 
for i, item in enumerate(thing): 
    print(i, item) 

def enum(iterable): 
    # must use list() to cast it as an object or else we return a generator object 
    return list(enumerate(iterable)) 

enum('hello there!')