我的学习笔记:
markdown真的是一个很好用的电子笔记,以前总习惯手写笔记,费时费力,代码也不好展现。接触到csdn这个格式后,又了解了一下markdown这个排版美观的输出形式,真的是大爱。我自用的是Typora,据了解还有其他的。
重点是可以直接上传我的学习笔记到csdn超级方便。
因为想学习算法类知识,所以系统的开始把Python在熟悉一下,预计在一周内学完。

元组.特点.创建的两种方式.tuple()要点.zip用法

列表属于可变序列,可以修改其中元素。

元祖属于不可变序列。

元组的创建

1、通过()创建元组,小括号可以省略。

>>> 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,)

2、通过tuple()创建元组

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)

3、元组对象的删除

del(删除对象)

>>> del c  #删除元祖c
>>> c
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    c
NameError: name 'c' is not defined

总结

  • tuple()可以接受列表、字符串、其他序列类型、迭代器等生成元祖。
  • list()可以接收元祖、字符串、其他序列类型、迭代器等生成列表。

041.元组.元素访问.计数方法.切片操作.成员资格判断

元组的元素访问和记数

1、元组的元素不能修改

>>> a=(20,10,30,9,8)
>>> a[3]
9
>>> a[3]=100 #元祖对象不可修改
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    a[3]=100 #元祖对象不可修改
TypeError: 'tuple' object does not support item assignment

2、元组的元素访问和列表一样,但是返回的仍然是元组对象。

>>>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')

3、元组排序,只能用内置函数sorted(tupleObj)

>>> a=(20,10,30,9,8)
>>> sorted(a)
[8, 9, 10, 20, 30]
#sorted()方法生成的是列表对象

4、元组其他操作

>>> a=1,20
>>> b=30,40
>>> a+b#元祖的拼接
(1, 20, 30, 40)
>>> len(a)
2
>>> sum(b)
70
>>> max(a+b)
40

zip用法

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>

042.元组.生成器推导式创建元组_总结

生成器推导使用的是小括号。

通过生成器对象,转化成列表或者元祖。

使用测试如下:

>>> 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
#指针依次移动

元祖的特点

  1. 元祖的核心特点:不可变序列
  2. 元祖的访问和处理速度比列表快
  3. 与整数和字符串一样,元祖可以作为字典的键,列表永远不能作为字典的键使用。