我知道我可以将 input 函数与 eval 函数结合使用来输入数字列表:
numbers = eval(input("enter a list of numbers enclosed in brackets: "))
此外,给定一个名为 items 的列表,我可以使用以下表达式获取项目的所有元素的列表,除了第一个元素:
items[1:]
我只是不确定如何让程序做我想让它做的事情
我知道我可以将 input 函数与 eval 函数结合使用来输入数字列表:
numbers = eval(input("enter a list of numbers enclosed in brackets: "))
此外,给定一个名为 items 的列表,我可以使用以下表达式获取项目的所有元素的列表,除了第一个元素:
items[1:]
我只是不确定如何让程序做我想让它做的事情
如果您有一个列表,并且您想知道第一个值是否稍后再次出现在列表中,您可以使用:
items[0] in items[1:]
这将返回 True 或 False 取决于 items 中的第一个元素是否稍后再次出现在 items 中。
不要使用eval,ast.literal_eval
更安全
import ast
numbers = ast.literal_eval(raw_input("enter a list of numbers enclosed in brackets: "))
一个更简单的解决方案将是
x = l[0]
l[0] = None
print x in l
l[0] = x
优点是您不需要重新创建列表
您的问题有两个部分:
有几种方法可以从用户那里获取数字列表。由于您似乎是 python 新手,我将向您展示最简单的编程方法:
n = raw_input("How many numbers in your list?: ")
n = int(n) # assuming the user typed in a valid integer
numbers = []
for i in range(n):
num = raw_input("enter a number: ")
num = int(num)
numbers.append(num)
# now you have a list of numbers that the user inputted. Step 1 is complete
# on to step 2
first_num = numbers[0]
for n in numbers[1:]:
if n == first_num:
print "found duplicate of the first number"
现在,有更优雅的方法来完成第 1 步。例如,您可以使用列表推导:
numbers = [int(n) for n in raw_input("Enter a bunch of space-separated numbers: ").split()]
此外,步骤 2 可以简化如下:
if numbers[0] in numbers[1:]:
print "found duplicates of the first number"
希望这可以帮助