中括号表示列表 如l=[1,2,3]
大括号表示字典 如 d={1:1,2:2,3:3} ,
中括号还可以表示上述三种数据类型的下标,如t[0],l[0],d[1]
大括号也可以表示set 如 s={1,2,3}
小括号也可以用在函数调用 ,改变表达式的优先级等
1.小括号:
我们用小括号来表示一个tutle元组,这是一个不可更改的数据表示,只能读取
2.中括号:
我们用中括号来定义一个list列表,这里注意不能用list来表示我们常说的“数组”,数组的定义需要用到numpy,例如你定义一个变量:
a=[[1,2,3],[4,5,6],[7,8,9]]
这也只是表示a是个元素的list变量的list,不可以用a[:,:]的形式来提取值,而可以使用a[0][1]这样的形式。但是,数据的寻找是逐步的,所以a[:][1]和a[1][:]是用一种结果
3.大括号:
代表dict字典数据类型,字典是由键对值组组成。冒号':'分开键和值,逗号','隔开组。用大括号创建的方法如下:
>>>dic={'jon':'boy','lili':'girl'}>>>dic{'lili': 'girl', 'jon': 'boy'}>>>4.矩阵的表示:
使用numpy.array来操作。
ython主要有三种数据类型:字典、列表、元组。其分别由花括号,中括号,小括号表示。
如:
字典:dic={'a':12,'b':34}
列表:list=[1,2,3,4]
元组:tup=(1,2,3,4)
python生成器是用来代替"不一定能够使用全部元素的数组",等到使用某一元素时,才生成该元素,用来节省空间.python生成器写法有两种
第一种:(数组生成式的中括号变成小括号)
# 生成器
arr = (x for x in range(1,6))
# 生成器下一个元素用next()来取得
print("--next1--")
print(next(arr))
print("--next2--")
print(next(arr))
print("--next3--")
print(next(arr))
输出结果:
--next1--
1
--next2--
2
--next3--
3
第二种方式: 使用关键字 yield 关键字
# 斐波那契数列生成器
def creatNum():
print("---开始执行生成器方法---")
a,b = 0,1
for i in range(0,5):
print("--step1--")
yield b
print("--step2--")
a,b = b,a+b
print("--step3--")
print("--..stop..--")
print("直接调用方法...")
print(creatNum())
#这里用一个标识符来指向生成器(不要把creatNum()当做函数)
func = creatNum()
#一次生成
print("使用next调用")
x = next(func)
print(x)
#又一次生成
print("使用next调用")
x = next(func)
print(x)
print("使用next调用")
x = next(func)
print(x)
输出结果:
直接调用方法...
使用next调用
---开始执行生成器方法---
--step1--
1
使用next调用
--step2--
--step3--
--step1--
1
使用next调用
--step2--
--step3--
--step1--
2
生成器还可以用 生成器.next 来调用,等价于 next(生成器)
如果使用next来调用,调用到生成器执行完毕,就会崩掉. 我们基本不会使用next来执行生成器
一般来说会用for循环来执行生成器:
# 斐波那契数列生成器
def creatNum():
print("---开始执行生成器方法---")
a,b = 0,1
for i in range(0,5):
print("--step1--")
yield b
print("--step2--")
a,b = b,a+b
print("--step3--")
print("--..stop..--")
print("直接调用方法...")
print(creatNum())
#这里用一个标识符来指向生成器(不要把creatNum()当做函数)
func = creatNum()
#使用for循环来执行生成器
for i in func:
print(i)
输出结果: (执行完毕不会崩溃)
直接调用方法...
---开始执行生成器方法---
--step1--
1
--step2--
--step3--
--step1--
1
--step2--
--step3--
--step1--
2
--step2--
--step3--
--step1--
3
--step2--
--step3--
--step1--
5
--step2--
--step3--
--..stop..--
在执行生成器时,可以使用 生成器.send(param) 方法
send方法不光是执行一步next操作,还会把send里面的参数传到生成器中充当yield表达式的返回值
**(注意:第一次执行,send里面的参数应该为None,或者使用next方法)
def test():
i = 0
while i <5:
temp = yield i
print(temp)
i += 1
t = test()
#先使用next执行,看能出来什么结果
t.__next__()
t.__next__()
print(t.__next__())
#使用send执行
t.send("1231231231223123")
print(t.send("hahahahhahaha"))
输出结果: (可见next输出temp为none , 而send 则把值传递进了生成器)
None
None
2
1231231231223123
hahahahhahaha
4