2020-12-24

Python基础数据类型(字节、列表)

人生苦短我学Python---第五讲 Python基础数据类型笔记及作业

教育机构: 逻辑教育
授课方式:腾讯课堂
教 师:Amy

一. 字节(bytes)

1. 字节介绍(掌握)

在 Python3 以后,字符串 和 bytes 类型彻底分开了。字符串是以字符为单位进行处理的,bytes 类型是以字节为单位处理的。

bytes 数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象。

Python3 中,bytes 通常用于网络数据传输、二进制图片和文件的保存等等。

2.字节创建(掌握)

可以通过调用 bytes() 生成 bytes 实例,其值形式为 b'xxxxx' ,对于同一个字符串如果采用不同的编码方式生成 bytes 对象,就会形成不同的值。

# 创建字节: b"***"
bt_1 = b"hello yaoqi"
print(type(bt_1))                                       # <class 'bytes'>

# 创建字节: bytes(string, encoding[, errors]) -> bytes
bt_2 = bytes("hello yaoqi", encoding = "utf8" )          # 万国码 utf8
print(bt_2)                                              # b'hello yaoqi'
print(type(bt_2))                                        # <class 'bytes'>

3.字节与字符串转换

那在实际应用中,我们通常会将 bytes类型 与 str类型 做转换。

bytes 转为 str: bytes.decode()

#将字节转换成str类型 decode() 解码
bt_3 = b"hello"
print(type(bt_3))                 # <class 'bytes'>
st_1 = bt_3.decode()
print(st_1)                       #  hello
print(type(st_1))                 # <class 'str'>

str 转为 bytes: S.encode()

#将字符串转换成字节:编码 encode()
st_2 = "yaoqi"
bt_4 = st_2.encode()
print(bt_4)                         # b'yaoqi'
print(type(bt_4))                   # <class 'bytes'>

二. 列表(list)

1. 列表介绍(掌握)

列表是 Python 中最基本也是最常用的数据结构之一,它是一个有序可重复的元素集合。从数据结构角度看,Python 的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

我们可对列表进行 修改、切片、追加、删除、嵌套、迭代、成员判断 等操作。

2.列表创建(掌握)

创建一个列表,只要把“逗号”分隔的不同的数据元素,使用方括号括起来即可。

除此之外,我们还可以直接通过 “list()” 来进行创建列表。

# 创建列表 注意是英文状态下的方括号
li_1 = []                # 这是一个空列表
print(li_1)              # []
print(type(li_1))        # <class 'list'>
li_1 = ["yao", "qi", 21, 35.6, True, 35.6]
print(li_1)              # ['yao', 'qi', 21, 35.6, True, 35.6]元素可迭代
# 创建列表 list()
li_2 = list()            # 这是一个空列表
print(li_2)            # []
li_2 = list("yaoqi")
print(li_2)            # ['y', 'a', 'o', 'q', 'i']
print(list("337968"))  # ['3', '3', '7', '9', '6', '8']注意数字是整体存储不能拆分

注意:

变量名最好不使用 list

列表里的元素可以是任意类型

iterable 表示可迭代的对象,简单来说就是可以一个一个元素取出来的。比如:str

3.访问(查)列表内的元素(掌握)

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一 。要访问它的某个元素,以方括号加下标值的方式即可。

注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是 len(list)-1。

思考:li_1 = [1,2] 是如何取出元素的呢?

#思考:如何取出元素的呢?
li_1 = [1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 18]
print(len(li_1) - 1)             # 10这是最大的索引
print(li_1[0])                   # 1
print(li_1[5])                   # 6
print(li_1[len(li_1) - 1])       # 18 这是最大索引的元素

4.修改列表内的元素(掌握)

直接取出元素进行重新赋值

思考:li_2 = ['a', 'b', 'c'] 是怎么将 'a' 改为 'A' 的呢?

#思考:li_2 = ['a', 'b', 'c'] 是怎么将 'a' 改为 'A' 的呢?
li_2 = ['a', 'b', 'c']
li_2[0] = "A"
print(li_2)       # ['A', 'b', 'c']

5.删除列表内的元素(掌握)

直接取出元素,再通过 del语句或者 list.remove() 或者 list.pop() 进行删除

del语句:del li[idx]
list.remove() 根据元素删除
list.pop() 最后一个开始弹出

li_3 = list("123456")
print(li_3)         #['1', '2', '3', '4', '5', '6']
del li_3[3]
print(li_3)         #['1', '2', '3', '5', '6']谁见到我家小4了吗?
li_3.remove("5")    #删除第一个出现的值。如果值不存在,则引发ValueError。
print(li_3)         #['1', '2', '3', '6']我家小5是不是去找小4了,怎么也不见了
li_3.pop()          #删除并返回索引处的项(默认最后一个),如果列表为空或索引超出范围,则引发索引器错误
print(li_3)         #['1', '2', '3']完了完了,我家小6子也跟前不见了

6.列表的特殊操作(熟悉)

列表相加与整数相乘
注意:

不是对应位置相加也不是对应位置相乘,而是拼接

# 想一想为什么不是[7,8,9]
lis_1 = [1, 2, 3]
lis_2 = [4, 5, 6]
print(lis_1 + lis_2)    #[1, 2, 3, 4, 5, 6]

# lis_3 * 3 是成3倍展开
lis_3 = [1, 2, 3]
print(lis_3 * 3)    #[1, 2, 3, 1, 2, 3, 1, 2, 3]

列表与列表不能相乘,也不能相除

列表成员判断
#来,吃个粟子就明白了
lis_4 = [1, 2, 3, 4, 7, 8]
if 7 in lis_4:
    print("7在教室里上课")
else:
    print("7不在教室里哦")

7.常用内置函数(熟悉)

len() --> 返回长度,也就是元素个数
max() --> 返回最大值
min() --> 返回最小值

lis_1 = list("abcdef")
print(len(lis_1))    #返回长度6
print(max(lis_1))    #返回最大值f 字符串与整数不能比较
print(min(lis_1))    #返回最小值a
注意:唉!老师你别敲黑板行吗?

字符串与字符之间比较转为 ascii
字符串与整数比较报错
以上方法都是 python 内置方法

8.列表的排序与反转(熟悉)

将列表反转排序,默认升序

list.reverse()
list.sort(reverse=Fasle)

# 将列表反转排序,默认升序
lis_2 = [1, 2, 3, 4, 5, 6, 7]
print(lis_2[::-1])             # [7, 6, 5, 4, 3, 2, 1]
lis_2.reverse()                # 这是内置的方法不能打印
print(lis_2)                   # [7, 6, 5, 4, 3, 2, 1]
lis_2.sort()                   # 默认是升序的
print(lis_2)                   # [1, 2, 3, 4, 5, 6, 7]
lis_2.sort(reverse=True)       #加参数后是逆序
print(lis_2)                   # [7, 6, 5, 4, 3, 2, 1]
注意: 以上方法是列表的方法

9.列表的切片(重点掌握)

slice(start, stop[, step])
切片模式:a[start:stop:step]

start为起始位置默认为0
stop为结束位置默认最后一个元素
[, step]为可选参数:步长,默认为1
思考:
li_a = [1,2,3,4,5,6,7] 取 [2,3,4] 以及取出 [2,4,6]

# li_a = [1,2,3,4,5,6,7] 取 [2,3,4] 以及取出 [2,4,6]
li_a = [1, 2, 3, 4, 5, 6, 7]
print(li_a[1:4])              #[2, 3, 4]默认步长为1 左闭右开
print(li_a[1::2])              #[2, 4, 6] 步长为2
#这个粟子好好吃   一个一个取出
li_b = [1, 2, 3, 4, ['yao', 'qi']]
print(li_b[4])             #取出['yao', 'qi']
print(li_b[4] [0])         #取出yao
print(li_b[4] [1])         #取出qi

10.字符串常见操作(熟悉)

L.append(object) --> 在列表末尾添加新的对象
L.count(object) --> 统计某个元素在列表中出现的次数
L.extend(iterable) --> 用新列表扩展原来的列表
L.index(value) --> 从列表中找出某个值第一个匹配项的索引位置
L.insert(index, object)--> 将对象插入列表
L.pop([index]) --> 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
L.remove(value) --> 移除列表中某个值的第一个匹配项
L.reverse() --> 反向列表中元素
L.sort(reverse=False) --> 对原列表进行排序
L.copy() --> 复制列表
L.clear() --> 清空列表

#请慢慢品尝刚出炉的粟子
lis_1 =list("acbcd")
lis_1.append('yaoqi')            #在列表末尾添加新的对象
print(lis_1)                     #['a', 'c', 'b', 'c', 'd', 'yaoqi']
print(lis_1.count('c'))          #统计某个元素在列表中出现的次数
print(lis_1.index('c'))          #从列表中找出某个值第一个匹配项的索引位置
lis_1.insert(1,'我在这')         #将对象插入列表
print(lis_1)                     #['a', '我在这', 'c', 'b', 'c', 'd', 'yaoqi']
lis_1.pop()                      #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
print(lis_1)                     #['a', '我在这', 'c', 'b', 'c', 'd']
lis_1.pop(1)                     #让你调皮,走你
print(lis_1)                     #['a', 'c', 'b', 'c', 'd']
lis_1.remove("c")                #移除列表中某个值的第一个匹配项,第一个C被余除了
print(lis_1)                     #['a', 'b', 'c', 'd']
lis_1.reverse()                  #反向列表中元素,逆序输出
print(lis_1)                     #['d', 'c', 'b', 'a']
lis_1.sort(reverse=False)        #对原列表进行排序,我又反回来了
print(lis_1)                     #['a', 'b', 'c', 'd']
lis_2 = ["yao", "qi"]
lis_1.extend(lis_2)              #用新列表扩展原来的列表
print(lis_1)                     #['a', 'b', 'c', 'd', 'yao', 'qi']
lis_1.clear()                    #清空列表
print(lis_1)                     # []  哈,整个世界都安静了

三. 后记

1.英文基础不好,好多函数拼写不出,只能靠死记硬背,但愿熟能生巧。
2.L.copy() --> 复制列表,这个复制函看是简单,真写代码时不知如何下手呢,累了,也不百度了,还是等今晚听Amy甜甜的讲解吧。哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容