is 语法带来的误解


起步

Python 的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。

假如要判断一个变量是不是 17,那可以:

if x is 17:

x 是 17 肯定是比 x == 17 更加口语化的。


如何跳出两层循环


起步

Python 中如果跳出嵌套的循环?这是大家都会遇到的问题。python 语法并不支持 break n 的语句,break 只能跳出一层循环。

要跳出两层循环,一般的处理方式是,把第二层循环包装成函数,利用函数的返回进行判断并退出。又或者设置个布尔变量来标记循环的结束。

直到我看到 pycon2013 中的一种优雅的处理方式,视频见:https://www.youtube.com/watch?v=EnSu9hHGq5o


算法-计算小数组在大数组中的索引


前言

大数组:[1,2,3,4,5,6]

小数组:[4,5]

我们需要快速得到小数组在大数组中的索引位置,本例中结果是3

算法思路

1. 暴力,嵌套for循环

function match(arr1,arr2){
  var n = arr1.length
  var m = arr2.length
  f1:
  for(var i=0;i<n;i++){
    if(arr1[i]===arr2[0]){
      f2:
      for(var j=1;j<m;j++){
        if(arr1[i+j]!==arr2[j])continue f1;
      }
      return i
    }
  }
  return -1
}