如何将其打印为新列表?

时间:2018-03-13 21:14:37

标签: python list

我希望程序将a列表中的数字打印为新列表 - x列表,而不是在其自己的列表中打印每个数字。

当我运行它时,输出为:

[1]
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]

当我只想要:

[1, 1, 2, 3]

这就是最简单的事情,我不记得该怎么做!有人能帮我吗?感谢。

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

x = []
def less_than_five():
    for item in a:
        if item < 5:
            x.append(item)
        print(x)

less_than_five()

4 个答案:

答案 0 :(得分:2)

您需要将print语句移出for循环:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

x = []
def less_than_five():
    for item in a:
        if item < 5:
            x.append(item)
    print(x)

less_than_five()

结果:

[1, 1, 2, 3]

使用list comprehension

可以获得相同的结果
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

x = []

def less_than_five():
    # if original x has to be changed extend is used
    x.extend([item for item in a if item < 5])
    print(x)

less_than_five()

答案 1 :(得分:2)

您可以按以下方式过滤结果:

print(list(filter(lambda x:x<5,a)))

输出:

[1, 1, 2, 3]

或者您也可以尝试列表理解:

print([i for i in a if i<5])

输出:

[1, 1, 2, 3]

答案 2 :(得分:1)

您可以找到不符合条件的第一个条目的索引,然后从那里切片。如果早期满足条件,这样做的好处是不会遍历整个列表。

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

index = 0
while index < len(a) and a[index] < 5:
    index += 1

print(a[:index])
# prints: [1, 1, 2, 3]

答案 3 :(得分:1)

您的print语句位于内循环中。您可以像这样修复代码:

Error:error: 'android:color/transparent' is incompatible with attribute android:background (attr) reference|color.