在Python的入门路上(答篇)……

来源:互联网 发布:关于数据的例子 编辑:程序博客网 时间:2024/05/21 09:05

在Python的入门路上(问篇)……

一、灵活的列表:

#coding=gbk'''需求:初始化一个方阵,要求主对角元素相等,主对角线元素为零。自己想当然地在Python搞个“类C/C++二维数组”,并两层循环地初始化每个元素。[测试环境]:Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32@Author: HuaLingson@Version: 0.1'''#NOTE: 当然存在更优的方法来做,这里的代码仅为说明“类C/C++二维数组”在Python中的不同。N = 3target = [[0]*N]*N #特别是对于‘半桶水’的,喜欢玩点儿小技巧的,肯定会这样print target #[[0, 0, 0], [0, 0, 0], [0, 0, 0]]for x in range(N):for y in range(x):print (x, y), (y, x), xtarget[x][y] = target[y][x] = xprint target #[[2, 2, 2], [2, 2, 2], [2, 2, 2]]#TODO: what is wrong?'''[[0, 0, 0], [0, 0, 0], [0, 0, 0]](1, 0) (0, 1) 1(2, 0) (0, 2) 2(2, 1) (1, 2) 2[[2, 2, 2], [2, 2, 2], [2, 2, 2]]1 None2 2[None, 2, None] 100 [None, 2, None]'''#NONE: ‘[[初始值]*N]*N’定义的‘二维列表’X,X[i][j](0<=i<=j<N)直接赋值是影响X的‘第j列’,与行无关。#NOTE: 想想Java中二维数组的初始化形式~#NOTE: C/C++是一维模拟二维,Java/Python则是采用类似C/C++中的数组指针数组结构。x = [[None]*3]*3x[1][1] = 1print x[0][1], x[1][0] #1 Nonex[0][1] = 2print x[2][1], x[1][1] #2 2x[1] = 100print x[0], x[1], x[2]

0 0
原创粉丝点击