我的学业作业需要一些帮助。我应该在python中编写一个程序,要求该人提供一个数字列表,在我的情况下:
[53,16,22,81,43,16,88,55,43,5]
按照出现的顺序打印出两次出现的数字。我也应该在我的程序中使用eval
函数。
目前我所拥有的只是:
list= eval(input("Input your list: "))
最终结果应该在python shell中看起来像这样:Input a list: [53,16,22,81,43,16,88,55,43,5]
[16, 43]
请帮忙!
答案 0 :(得分:0)
编辑:从评论中我了解输出中的数字应该按照输入中第二个的顺序列出,正如描述显然所示:
当学生们去买多余的蛋糕时,这些数字应该是[的]顺序。
您可以将列表理解与inp[:i].count(inp[i]) == 1
一起用作过滤条件,这意味着当前数字应该在当前索引之前出现
inp = eval(input('Input your list:'))
print([j for i, j in enumerate(inp) if inp[:i].count(j) == 1])
不要将list
用作变量名,因为它是Python中的existing function。
正如其他人所说:使用eval
is frowned upon,当然,当用户提供参数时。
这实现了相同的算法,但只使用最基本的结构:
result = []
n = len(inp)
for i in range(n):
count = 0
# only look at number preceding the one at i
for j in range(i):
if inp[i] == inp[j]:
count += 1
# we look for cases where there is exactly one match
# so we know that at i it is the 2nd occurrence
if count == 2:
break
if count == 1:
result.append(inp[i])
print(result)