【发布时间】:2022-01-25 12:58:44
【问题描述】:
我有一个这样的列表:
my_list=[False, False, True, True, False, False, True]
我想更改此列表,以便前 n 次出现的 True 保持不变,而所有其他的都变为 False。
例如,如果 n=1,我想创建一个与此相同的新列表:
my_new_list=[False, False, True, False, False, False, False]
如果 n=2;应创建此列表:
my_new_list=[False, False, True, True, False, False, False]
我可以轻松地在 for 循环中执行此操作,但在 Python 中执行此操作的最佳方法是什么?
编辑1
这是我的代码:
def f(l,n):
c=1
new_l=[False] * len(l)
if n>= len(l):
return new_l
for i,v in enumerate(l):
if v:
if(c >= n):
return new_l
new_l[i]=True
c +=1
return new_l
此代码遍历列表中的所有项目,但只是其中的一部分。但是它有 9 行代码,有没有更短的版本或更快的版本?
【问题讨论】:
-
因为它是一个列表,您必须对其进行一次迭代。你提到你可以。所以你的方式是最好的方式。
-
@shivankgtm for 循环有好几行,能不能短一点?说一行代码