Python 如何用理解替换for循环
我有Python 如何用理解替换for循环,python,python-3.x,loops,for-loop,list-comprehension,Python,Python 3.x,Loops,For Loop,List Comprehension,我有状态数组功能。如果If状态为true,我将从列表结果中删除项。它不起作用,因为for loop超出范围。 我想解决这个问题,我想问,有没有可能让列表理解而不是“for loop”,如果有,怎么做 def state_array(self): for k in range(len(result)): if '[0]' in str(result[k]): if '[7]' in str(result[k+7]) and '[8]' not in
状态数组
功能。如果If
状态为true,我将从列表结果中删除项。它不起作用,因为for loop
超出范围。
我想解决这个问题,我想问,有没有可能让列表理解而不是“for loop”,如果有,怎么做
def state_array(self):
for k in range(len(result)):
if '[0]' in str(result[k]):
if '[7]' in str(result[k+7]) and '[8]' not in str(result[k+8]):
result[k][0] = str(result[k][0]).replace('[0]', '').replace('X0', 'X0,8') # state array
del result[k+1:k+7]
else:
continue
我的意见:
V;3;M_BB01_03[0];SPPP.BK1800.58,X0;RW
V;3;M_BB01_03[1];SPPP.BK1800.58,X1;RW
V;3;M_BB01_03[2];SPPP.BK1800.58,X2;RW
V;3;M_BB01_03[3];SPPP.BK1800.58,X3;RW
V;3;M_BB01_03[4];SPPP.BK1800.58,X4;RW
V;3;M_BB01_03[5];SPPP.BK1800.58,X5;RW
V;3;M_BB01_03[6];SPPP.BK1800.58,X6;RW
V;3;M_BB01_03[7];SPPP.BK1800.58,X7;RW
和预期产出:
V;3;M_BB01_03[0];SPPP.BK1800.58,X0,8;RW
在这里,为了完成一个干净的列表理解,您在这个块中有太多的逻辑。我并不是说不可能把所有的东西都放在一个列表中,我说这会非常难看。为了防止超出范围的错误,只需将范围(len(result))替换为枚举(result)
在这里,为了完成一个干净的列表理解,您在这个块中有太多的逻辑。我并不是说不可能把所有的东西都放在一个列表中,我说这会非常难看。为了防止超出范围的错误,只需将范围(len(result))替换为枚举(result)
您可以从0循环到数组的原始长度,然后更改循环中的实际长度。对此的快速修复方法是使用while循环:
k=0
while(k<len(A)):
if(condition)
del(A[k])
k=k+1
k=0
while(k从0循环到数组的原始长度,然后更改循环中的实际长度。对此的快速修复方法是使用while循环:
k=0
while(k<len(A)):
if(condition)
del(A[k])
k=k+1
k=0
虽然(你能给出一些输入和期望的输出吗?如果你给出一个完全可以独立运行的代码段,人们会更容易帮助你复制输入和输出的I更新问题。你的输入是字符串列表吗?当你的输入字符串只有8个元素时,为什么要检查第9个元素?你能给出一些输入和期望的结果吗输出?如果你给出一个可以完全独立运行的代码片段,人们可以更容易地帮助你复制输入上的“我更新的问题”,并输出一个字符串列表。当你的输入字符串只有8个元素时,为什么要检查第9个元素?它会解决它,因为它不是在固定大小的范围内迭代在循环之前,您正在迭代实际的项。我唯一忘记的是检查k+7是否低于结果的长度。因此,如果使用enumerate
生成迭代器,如果iterable的大小发生变化,您就不会得到索引器!我不知道-谢谢。它不起作用,我有一个错误:if int(k+7)>=len(result):TypeError:只能将list(而不是“int”)连接到list
my bad,枚举(result)中是k,r它确实解决了这个问题,因为您不是在循环之前创建的固定大小的范围内进行迭代,而是在实际项目上进行迭代。我唯一忘记的是检查k+7是否低于结果的长度。因此,如果您使用产生迭代器的enumerate
,如果iterable的大小发生变化,您就不会得到索引器!我不知道-谢谢。它不工作,我有一个错误:if int(k+7)>=len(result):TypeError:只能将list(而不是“int”)连接到list
my bad,它是枚举(result)中的k,r