【问题标题】:Moving values from one list to new list将值从一个列表移动到新列表
【发布时间】:2021-01-13 22:40:53
【问题描述】:

我正在练习编码,我需要一些帮助。 这是提示: 拿一个清单,比如说这个:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 并编写一个程序,打印出列表中小于 5 的所有元素。

附加:

  1. 不要逐个打印元素,而是创建一个新列表,其中包含该列表中小于 5 的所有元素,然后打印出这个新列表。
  2. 用一行 Python 写下来。
  3. 向用户询问一个数字并返回一个列表,其中仅包含原始列表“a”中小于用户给出的数字的元素。

这是我的代码:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
number = int(input("Pick a number: "))
new_list = []
for item in a:
    if item < number:
        new_list.append(item)
    print(new_list)

我一直遇到的问题是,每当我运行它并使用任何数字(在本例中,我选择 5)时,我都会不断得到这个结果:

Pick a number: 5
[1]
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]
[1, 1, 2, 3]

有人可以帮帮我吗?

【问题讨论】:

    标签: python list for-loop if-statement methods


    【解决方案1】:

    除了前面的帖子指出print 语句的错误放置之外,您可以获得与此单行符相同的结果:

    
    # one-liner
    
    result = [x for x in a if x < number]
    
    print(result)
    

    【讨论】:

    • 从字面上看会不会更单行:) print([x for x in a if a &lt; 5])
    【解决方案2】:

    您需要将 print(new_list) 语句移到 for 循环之外。

    a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    number = int(input("Pick a number: "))
    new_list = []
    for item in a:
        if item < number:
            new_list.append(item)
    print(new_list)
    

    【讨论】:

      【解决方案3】:

      虽然丹尼尔已经给出了答案恕我直言,但我想再补充一点,以防第二个要求在第三个要求之后仍然有效。

      target = int(input("Pick a number: "));print([x for x in a if x < target])
      

      ; 这里用来把一些简单的语句放在一行。 详情请参考How to put multiple statements in one line?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 2022-07-29
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多