我的学习笔记:
markdown真的是一个很好用的电子笔记,以前总习惯手写笔记,费时费力,代码也不好展现。接触到csdn这个格式后,又了解了一下markdown这个排版美观的输出形式,真的是大爱。我自用的是Typora,据了解还有其他的。
重点是可以直接上传我的学习笔记到csdn超级方便。
因为想学习算法类知识,所以系统的开始把Python在熟悉一下,预计在一周内学完。
列表属于可变序列,可以修改其中元素。
元祖属于不可变序列。
>>> a=(10,20,30)
>>> a
(10, 20, 30)
>>> a=10,20,30 #不加小括号也可以
>>> a
(10, 20, 30)
>>> b=(20)
>>> b
20
#如果元祖中只有一个数,后面必须要加逗号。不然会默认为一个int整数。
>>> b=(20,)
>>> b
(20,)
tuple(可迭代的对象)
例如:
>>> c=tuple()#创建一个空的元祖对象
>>> c
()
>>> c=tuple("abc")#把字符串转化为元祖
>>> c
('a', 'b', 'c')
>>> c=tuple(range(3))
>>> c
(0, 1, 2)
>>> c=tuple([2,3,4])#把列表转化为元祖
>>> c
(2, 3, 4)
del(删除对象)
>>> del c #删除元祖c
>>> c
Traceback (most recent call last):
File "" , line 1, in <module>
c
NameError: name 'c' is not defined
>>> a=(20,10,30,9,8)
>>> a[3]
9
>>> a[3]=100 #元祖对象不可修改
Traceback (most recent call last):
File "" , line 1, in <module>
a[3]=100 #元祖对象不可修改
TypeError: 'tuple' object does not support item assignment
>>>a=tuple("asdlkjlkdjflaskdjflaskjdlkasjdkljlkjf")
>>> a
('a', 's', 'd', 'l', 'k', 'j', 'l', 'k', 'd', 'j', 'f', 'l', 'a', 's', 'k', 'd', 'j', 'f', 'l', 'a', 's', 'k', 'j', 'd', 'l', 'k', 'a', 's', 'j', 'd', 'k', 'l', 'j', 'l', 'k', 'j', 'f')
>>> a[1:10] #切片
('s', 'd', 'l', 'k', 'j', 'l', 'k', 'd', 'j')
>>> a[::-1] #和列表的访问一样
('f', 'j', 'k', 'l', 'j', 'l', 'k', 'd', 'j', 's', 'a', 'k', 'l', 'd', 'j', 'k', 's', 'a', 'l', 'f', 'j', 'd', 'k', 's', 'a', 'l', 'f', 'j', 'd', 'k', 'l', 'j', 'k', 'l', 'd', 's', 'a')
>>> a[:4]
('a', 's', 'd', 'l')
>>> a=(20,10,30,9,8)
>>> sorted(a)
[8, 9, 10, 20, 30]
#sorted()方法生成的是列表对象
>>> a=1,20
>>> b=30,40
>>> a+b#元祖的拼接
(1, 20, 30, 40)
>>> len(a)
2
>>> sum(b)
70
>>> max(a+b)
40
zip(列表1,列表2,…)可以将多个列表对应位置的元素组合成为元祖,并返回zip对象。
>>> a=[10,20,30]
>>> b=[40,50,60]
>>> c=[70,80,90]
>>> d=zip(a,b,c)
>>> list(d) #zip对象转化为列表
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]
>>> d#zip操作后,返回的是一个zip对象
<zip object at 0x02D04238>
生成器推导使用的是小括号。
通过生成器对象,转化成列表或者元祖。
使用测试如下:
>>> s=(x*2 for x in range(5))#x乘以2的操作,循环生成0到4这五个数
>>> s
<generator object <genexpr> at 0x02CE47B0>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> tuple(s)#生成器只能访问一次,在访问就空了,因为是指针原理
()
可以用_ _next _ _( )提取元素
>>> s=(x*2 for x in range(5))
>>> s.__next__()#前后各两个下划线
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8
#指针依次移动