我希望程序将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()
答案 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.