Python debug —— 逻辑错误(三)

来源:互联网 发布:淘宝店可以转天猫吗 编辑:程序博客网 时间:2024/06/17 21:50
  • (0)为什么 print foo() 会输出None,可见foo()或者没有返回值,或者返回的对象为空;

  • (1)迭代 zip(x, y) 时,每次取出的元素是二元元组(tuple),该二元元组由 x,y 的对应位上的元素组成;

list.append() 的参数为 list comprehension

此时添加的是一个 list,而不是逐元素地添加;

>>> l = []>>> l.append([x for x in range(10) if x % 2==0])>>> l[[0, 2, 4, 6, 8]]>>> l.append((x for x in range(10) if x % 2==0))[[0, 2, 4, 6, 8], <generator object <genexpr> at 0x02F05BE8>]                        # 添加进去的是 generator

和 list comprehension 相搭配的是 list.extend()

range 左边界小于右边界

>>> range(2, 1)range(2, 1)

最危险的莫过于不直接报错,

  • (1)索引时会报错,因其区间长度为 0

    >>> range(2, 1)[0]IndexError: range object index out of range
  • (2)迭代时,不会进入循环体:

    >>> for i in range(2, 1):        print(i)>>> 

三维数组(ndarray)的访问

X[:, :, 0] 与 X[0, :, :]

>> X = np.random.randn(2, 3, 2)array([[[ 0.26137804,  0.46003339],        [ 0.94744861,  0.38409255],        [ 0.78010047,  1.44591233]],       [[-0.25581073, -0.17355291],        [ 1.81726758,  2.07810646],        [ 0.88703373, -0.95118625]]])>> X[:, :, 0]array([[ 0.26137804,  0.94744861,  0.78010047],       [-0.25581073,  1.81726758,  0.88703373]])>> X[0, :, :]array([[ 0.26137804,  0.46003339],       [ 0.94744861,  0.38409255],       [ 0.78010047,  1.44591233]])

连等号

>> y = np.zeros((10, 1))[5] = 1

y直接等于1,而不会是别的。

  • 表达式本身没有返回值(不像C/C++返回左值),
  • 连等号的含义是多变量指向同一内存对象,
    • np.zeros((10, 1))[5] 指向1
    • y 也指向 1
0 0
原创粉丝点击