从for循环中的列表中删除。python
如果大于某个值,如何从列表中删除从for循环中的列表中删除。python,python,list,function,for-loop,Python,List,Function,For Loop,如果大于某个值,如何从列表中删除k 您可以使用列表理解 my_list = [0,1,2,3,4,5,6,7,8,9,10] for k in my_list: if k > 6: #delete k 以上两个选项将做同样的事情。您不应该更改正在迭代的列表,只需创建一个新列表并分配它即可 对于变量: k = filter(lambda x: x <= 6, k) my_list=[k代表my_list中的k如果k试试这个 my_list = [k fo
k
您可以使用列表理解
my_list = [0,1,2,3,4,5,6,7,8,9,10]
for k in my_list:
if k > 6:
#delete k
以上两个选项将做同样的事情。您不应该更改正在迭代的列表,只需创建一个新列表并分配它即可 对于变量:
k = filter(lambda x: x <= 6, k)
my_list=[k代表my_list中的k如果k试试这个
my_list = [k for k in my_list if k <= 6]
>>我的\u list=[如果我在我的\u列表中为我打印我的\u列表
[0, 1, 2, 3, 4, 5, 6]
>>>
要从列表中删除元素,可以使用删除方法。
但您必须考虑到,在迭代列表时删除元素会导致未定义的行为。例如:
>>> my_list= [i for i in my_list if i <= 6]
>>> print my_list
[0, 1, 2, 3, 4, 5, 6]
>>>
如果要避免这种情况,可以使用列表理解创建一个新的列表
,或者简单地迭代列表的副本:
>>> L = [1,2,3,4,5]
>>> for x in L:
... L.remove(x)
...
>>> L #should be empty
[2, 4]
>L=范围(10)
>>>[x代表L中的x,如果x>>代表L中的x[:]:
…如果x>6:
…L.移除(x)
...
>>>L
[0, 1, 2, 3, 4, 5, 6]
我将在循环结束时开始循环,循环不会移动索引:
>>> L = range(10)
>>> [x for x in L if x <= 6]
[0, 1, 2, 3, 4, 5, 6]
>>> for x in L[:]:
... if x > 6:
... L.remove(x)
...
>>> L
[0, 1, 2, 3, 4, 5, 6]
如果要删除列表中大于指定值的所有元素,可以使用排序和切片
我建议使用set而不进行排序、删除或诸如此类的操作…:p
my_list = [0,1,2,3,4,5,6,7,8,9,10]
for k in my_list[::-1]:
if k > 6:
del k
然后分类
a = [3,1,2,4,5,6,8,9,0,7]
然后切片
a = a.sort() #a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
idx = a.index(6) #idx=6
或者,另一种方法是使用集合
。使用指定限制的范围
创建另一个列表,例如,您希望删除4到8的所有元素,然后
a = a[0:idx] # a = [0, 1, 2, 3, 4, 5]
您还可以通过使用slice
或set
来避免使用for
循环。
a = a[0:idx] # a = [0, 1, 2, 3, 4, 5]
rm = xrange(4,8+1)
a = list(set(a) - set(rm)) # a = [0, 1, 2, 3, 9]