我有一个包含20000个列表的列表.我使用每个列表的第3个元素作为标志.我希望在此列表上执行一些操作,只要至少有一个元素的标志为0,它就像:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Run Code Online (Sandbox Code Playgroud)
在开始时,所有标志都是0.我使用while循环来检查至少一个元素的标志是否为0:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Run Code Online (Sandbox Code Playgroud)
如果check(my_list)返回True,那么我继续处理我的列表:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Run Code Online (Sandbox Code Playgroud)
实际上,当我迭代它时,我想删除my_list中的一个元素,但是当我迭代它时,我不允许删除项目.
原始的my_list没有标志:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Run Code Online (Sandbox Code Playgroud)
因为我迭代它时无法删除元素,所以我发明了这些标志.但是它my_list包含很多项,并且while循环在每个for循环中读取所有项,并且它会消耗大量时间!你有什么建议吗?
my_list1 = [30,34,56]
my_list2 = [29,500,43]
Run Code Online (Sandbox Code Playgroud)
如何检查列表中的所有值是否> = 30?my_list1应该工作,my_list2不应该.
我唯一能想到的是:
boolean = 0
def func(ls):
for k in ls:
if k >= 30:
boolean = boolean + 1
else:
boolean = 0
if boolean > 0:
print 'Continue'
elif boolean = 0:
pass
Run Code Online (Sandbox Code Playgroud)
事后看来,在处理速度真正重要且利用的更大数据集后numpy......我会这样做:
>>> my_list1 = [30,34,56]
>>> my_list2 = [29,500,43]
>>> import numpy as np
>>> A_1 = np.array(my_list1)
>>> A_2 = np.array(my_list2)
>>> A_1 >= 30
array([ True, True, True], …Run Code Online (Sandbox Code Playgroud)