【发布时间】:2016-05-14 15:38:49
【问题描述】:
在 C 和 C++ 中,可以在 for 循环中更改索引(例如 i)。例如,这对于比较当前元素并基于该比较比较下一个元素很有用:
for(int i = 0; i < end; i++)
if(array[i] == ':')
if(array[++i] == ')')
smileyDetected = true;
现在我知道这不能在 Python 中完成(对于variousreasons)。但是,我不禁想知道 Python 是否有简短的替代方案?我可以想出:
while i < end:
if array[i] == ':':
i += 1
if array[i] == ')':
smileyDetected = True;
但是,这会花费我额外的一行,除非您多次执行相同的操作(“可读性差”并不意味着文件很长),否则这听起来并不那么糟糕。所以要把它放在一行中,我会想到类似的东西
array[i += 1],但这似乎是无效的语法。
是否存在 Python 等效项,它在读取该递增索引的同一行中执行索引的递增?
编辑:
由于大多数答案提到使用in 查找子字符串,作为特定示例的替代方案,让我添加另一个无法以这种方式解决的示例:
j = 0;
for(int i = 0; i < end; i++)
if(array[i] == ':')
if(array[++i] == ')')
anotherArray[j++] = array[++i];
我的意思是增加索引,而不是找到特定的字符串。
【问题讨论】:
-
为什么不在对个字符中迭代字符串?
-
如果数组不是 C 字符串且 ':' 是最后一个字符,C/C++ 将显示未定义的行为。
-
如果
array是一个字符串,你可以写成smiley_detected = ':)' in array。 -
SImplify 像这样(非pythonic方式和语言不可知论) while i
-