-2

我知道我可以将 input 函数与 eval 函数结合使用来输入数字列表:

numbers = eval(input("enter a list of numbers enclosed in brackets: "))

此外,给定一个名为 items 的列表,我可以使用以下表达式获取项目的所有元素的列表,除了第一个元素:

items[1:]

我只是不确定如何让程序做我想让它做的事情

4

4 回答 4

4

如果您有一个列表,并且您想知道第一个值是否稍后再次出现在列表中,您可以使用:

items[0] in items[1:]

这将返回 True 或 False 取决于 items 中的第一个元素是否稍后再次出现在 items 中。

于 2012-07-29T17:31:47.323 回答
2

不要使用eval,ast.literal_eval更安全

import ast
numbers = ast.literal_eval(raw_input("enter a list of numbers enclosed in brackets: "))
于 2012-07-29T17:39:37.350 回答
2

一个更简单的解决方案将是

x = l[0]
l[0] = None
print x in l
l[0] = x

优点是您不需要重新创建列表

于 2012-07-29T17:45:53.263 回答
1

您的问题有两个部分:

  1. 从用户那里获取数字列表
  2. 检查第一个数字是否在此列表中重复

有几种方法可以从用户那里获取数字列表。由于您似乎是 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"

希望这可以帮助

于 2012-07-29T18:37:08.203 回答