2017-11-17 118 views
0

我相信我在我的代码中出现了一个错误,我的列表元组垂直打印出来而不是正确的方式。可能有人请告诉我发生了什么事?为什么我的元组列表是垂直的?

这是要问的问题: 枚举它! 编写一个名为enum的函数,该函数接受一个序列并返回一个2元组列表,每个元组保存索引及其相关项目。

这是给定的例子:

>>> 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] 

我将期望的结果是: [(0,45),(1,67), (2,23),(3,34),(4,88),(5,12),(6,90)]

当我拿走print(list1)并使用return list1代替时,这是结果。

[[0], 13] 

为什么会出现这种情况?

当我把这个放到我正在接受辅导的网站上时,会显示“杰克和简”这个词,如果是不同的测试,会显示随机数字。我的第二个问题是如何根据参数输入获取距离回路。我试图导入数学和随机导入。虽然两者都是短期解决方案,但它们不是长期解决方案。

我觉得我正在解决问题,因为代码在那里只是基本的基础知识可能会丢失。

回答

1

这是你需要在同一行

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

既然你想要的结果

打印一切什么

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

+0

这将python3只工作(除非打印功能从__future__进口),而他并没有指定版本。 – Nf4r

+0

@ Nf4r,哦好吧我认为它是python3 –

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 

你需要记住的是一个事实,即print不是return

1

这是应该的。您需要在开始loop.Just像下面

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

问题要求你回报与所需的结构列表之前创建的列表,所以要小心这一点。你现在正在打印一张。

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!') 
相关问题