In [1]:
# 最常用的import案例,用来说明在notebook中怎么输入和执行
import numpy as np
In [9]:
# 表达式和输出,print函数、直接输出、输出格式化
print(999 * 3)
"{:<5d}".format(2 + 16)
2997
Out[9]:
'18   '
In [4]:
# 使用Unicode字符作为变量名等
姓名 = "小林"
In [7]:
print("My Name IS {}".format (姓名))
My Name IS 小林
In [10]:
# bool 类型示例
True, False
Out[10]:
(True, False)

List

List 就是列表

这是一个Markdown单元格的例子

In [11]:
# 列表 (List) 的例子
la = [1, 2, 3]
In [13]:
print(la)
[1, 2, 3]
In [15]:
# 通过下标访问列表元素
la[1]
Out[15]:
2
In [16]:
# 列表的元素可以有不同类型,甚至可以是另外一个列表,形成列表嵌套
lb = [999, la, 666, "Hello"]
print(lb)
len(lb)
[999, [1, 2, 3], 666, 'Hello']
Out[16]:
4
In [17]:
# 空列表例子
l_empty = []
In [18]:
l_empty
Out[18]:
[]
In [19]:
# 元组 (Tuple) 元组是不可修改的
ta = (1, 2, 3)
print(ta)
(1, 2, 3)
In [20]:
# 元组和列表的最大区别,就是列表可以修改,而元组不行
la[2] = 100
la
Out[20]:
[1, 2, 100]
In [21]:
# 对元组的修改会报错
ta[1] = 0
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-7bbf082115c8> in <module>
----> 1 ta[1] = 0

TypeError: 'tuple' object does not support item assignment
In [24]:
# 单元素的列表和元组,特别注意,单元素的元组,必须在值后面加个逗号,否则会被认为是括号
lc = [1]
tc = (1)
tcc = (1,)
dd = lc, tc, tcc
In [25]:
dd
Out[25]:
([1], 1, (1,))
In [26]:
# 元组应用之一:给多个变量同时赋值
d0, d1, d2 = 198, 345, 23
In [27]:
# 字典 (Dict) 的例子,字典是一系列键-值对 (Key to Value),键可以是整数或者字符串
dx = {
    1:"One", 
    2:"Three",
    9:"Hello",
    "E":987.654,
}
dx
Out[27]:
{1: 'One', 2: 'Three', 9: 'Hello', 'E': 987.654}
In [28]:
# 通过键访问字典,类似于下标写法
dx[1], dx["E"]
Out[28]:
('One', 987.654)
In [29]:
# 通过键修改字典元素值,如果键存在则更新 ,如果不存在就添加
dx["RA"] = "12:34:56.78"
In [30]:
dx
Out[30]:
{1: 'One', 2: 'Three', 9: 'Hello', 'E': 987.654, 'RA': '12:34:56.78'}
In [32]:
# 切片案例
lx = [1, 3, 5, 0, 9, 3, 5]
print(lx[0])  # 正常访问
print(lx[5])
print(lx[-1]) # 负数下标表示从尾部向前
print(lx[2:6])  #  切片,选择区域,2:6表示2,3,4,5
print(lx[5:2:-1])  # 逆向切片,注意第三项是步长
print(lx[::2])  # 切片的三个要素都能省略,前两项省略表示从头到尾(或者从尾到头)
1
3
5
[5, 0, 9, 3]
[3, 9, 0]
[1, 5, 9, 5]
In [33]:
# 列表的加法运算,直接连接
la + lb
Out[33]:
[1, 2, 100, 999, [1, 2, 100], 666, 'Hello']
In [45]:
# 列表乘整数,表示重复。注意和数组乘的区别
# 另外,这里结尾加了分号,所以本单元格实际上最后一个语句是空语句 ,所以前面的输出被抹掉了
la * 3;
In [44]:
#  if语句,条件不一定非要是bool,一切皆可,非零非空就是真
if not None:
    print(la)
[1, 2, 100]
In [46]:
s = 0
while s < 100:
    s += 16
print(s)
112
In [47]:
# for循环,实际上for循环相当于其他语言的foreach
# 通过range生成器,实现了其他语言的计数循环
s = 0
for i in range(10):  # 0--9
    print(i)
    s += i
    print(s)
0
0
1
1
2
3
3
6
4
10
5
15
6
21
7
28
8
36
9
45
In [50]:
# range也可以实现类似切片的操作
for i in range(2, 10, 3):
    print("-->> {}".format(i))
-->> 2
-->> 5
-->> 8
In [51]:
# Unicode字符串,也可以被循环拆解
for c in "你好":
    print(c)
你
好
In [52]:
# 对列表进行循环的一个典型做法,先求长度,再逐个循环
for i in range(len(la)):
    print("la[{i}] = {x}".format(i=i, x=la[i]))
la[0] = 1
la[1] = 2
la[2] = 100
In [53]:
# range+len组合的更优雅实现,这里利用了元组同时对多个变量赋值的能力
for i, x in enumerate(la):
    print("la[{i}] = {x}".format(i=i, x=x))
la[0] = 1
la[1] = 2
la[2] = 100
In [54]:
# 同时迭代多个对象
for i1, i2 in zip(la, lb):
    print(i1, i2)
1 999
2 [1, 2, 100]
100 666
In [ ]: