我正在做python评估,我需要一只手:(所以,任务是使用这个等式:10*x-5,只打印正数;任务的重点是使用列表理解,最后,我必须打印更新后的列表。我做了所有这些,但我不知道如何将更新的元素插入/附加到新列表中,所以下面是我所做的。。
lst =[]
Update_MyList = [lst.append(MyList[z])for z in range(len(MyList)) if (10*MyList[z]-5 > 0)]
Update_MyList.append(lst)
print(Update_MyList)
我得到的只是:[没有,没有,没有,没有,没有]
3条答案
按热度按时间u0sqgete1#
代码1
假设您的mylist为[1,-2,3],并且您希望在输出为负数时不打印任何内容。以下是代码1:
输出:
编辑后
代码2
如果你不想
None
对于负值,只需删除else None
部分下面是代码2:输出:
代码3
如果您使用的是python>=3.8,请使用以下代码避免两次计算10*x-5。下面是代码3:
输出:
41ik7eoe2#
下面是使用列表理解实现这一点的最简单方法。首先,创建函数值:
然后过滤掉负值:
这里我保留了零值,但是您也可以通过更改
v >= 0
到v > 0
.尽管您可以根据自己的意愿将它们组合在一起,但它仍然可以正常工作。显然,您不希望对每个值多次计算10*x-5,但您可以创建
MyList2
直接如下:这基本上结合了两者,第一个现在作为一个生成器保留,它永远不会扩展到实际的列表中。同样,对于每个原始列表值,函数10x-5的求值不会超过一次。同样,你可以使用
v >= 0
或v > 0
取决于是否要包含或排除零。如果您愿意使过滤条件取决于特定函数10x-5,您可以执行以下操作:
这将适用于浮点值,如0.1、0.6等。如果要排除零,可以使用
v > 0.5
. 事实上,我不喜欢这个解决方案,也不喜欢上一个,因为(1)它非常特定于函数10*x-5,(2)它使用浮点,这在0.5中是安全的,但通常不希望用于精确比较。ecfsfe2w3#
所以我想出来了:)