我相信我的编码错误是在我的元组列表中垂直打印而不是正确的方式。请有人请告诉我它是什么?
这是问的问题: 枚举它! 编写一个名为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]
为什么会这样?
当我把它放到我正在辅导的网站上时,单词"杰克和简"显示,如果进行不同的测试,则显示随机数。我的第二个问题是如何根据参数输入得到范围循环。我试图导入数学并随机导入。虽然两者都是短期解决方案,但它们不是长期解决方案。
我觉得我已经过度思考问题,因为代码就在那里,基本的基本原理可能会丢失。
答案 0 :(得分: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)]
答案 1 :(得分:1)
你几乎是对的。问题出在您的\1
上。通过使用(\\+|-|<|>)
括号,您将创建一个列表,因此a=[i]
是一个列表,而不是一个int。
改变[]
,一切都会好的。同样,硬编码的a
也应更改为a=i
。适合您的理想解决方案如下:
range(7)
您需要记住的是,range(len(aSequence))
不是def enum(aSequence):
result = []
for i in range(len(aSequence)):
result.append((i, aSequence[i]))
return result
。
答案 2 :(得分: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])
答案 3 :(得分: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!')