python 数据类型

2 组合数据类型
2.1 集合类型
集合的定义及操作

~ 集合用大括号 {} 表示,元素间用逗号分隔;

~ 建立集合类型用 {} 或 set();

~ 建立空集合类型,必须用 set();

~ 集合元素之间无序;

~ 集合中每个元素唯一,不存在相同元素

A = {“python”,‘666’,(“wenwei-blog”,666)}
{‘python’, ‘666’, (‘wenwei-blog’, 666)}
B = set(“pypy”)
{‘y’, ‘p’}
C = {“python”,123,“python”,123}
{‘python’, 123}
集合操作符

6 个操作符

4 个增强操作符

集合操作方法

集合应用场景

包含关系比较;数据去重。

2.1 序列类型定义
~ 序列是具有先后关系的一组元素

~ 序列是一个基类类型(基本数据类型)

~ 序列类型分为字符串、列表、元组类型

2.2 序列类型之列表
列表由一系列按特定顺序排列的元素组成,用方括号 [] 来表示列表。

列表的增删改查相关操作

函数或方法

描述

实例

L[i]=x

替换列表 L 第 i 数据项为 x

L = [‘Python’,‘PHP’,‘JavaScript’,‘C++’]

L[1] = ‘Java’

L

[‘Python’, ‘Java’, ‘JavaScript’, ‘C++’]

L[i:j]=L1

用列表 L1 替换列表 L 中第 i 到 j 项数据

>>> L
[‘Python’, ‘Java’, ‘JavaScript’, ‘C++’]

L1 = [‘C’,‘Go’]
L[0:2]=L1
L
[‘C’, ‘Go’, ‘JavaScript’, ‘C++’]

del L[i:j:k]

删除列表 L 第 i 到第 j 项以 k 为步数的数据

>>> L
[‘C’, ‘Go’, ‘JavaScript’, ‘C++’, ‘Java’, ‘C#’, ‘Ruby’, ‘Lua’]

del L[1:6:2]
L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’]

L+=L1 或 L.extend(L1)

将列表 L1 元素增加到列表 L 中

>>> L;L1

[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’]
[‘C’, ‘Go’]

L+=L1
L;L1
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’]
[‘C’, ‘Go’]

L*=n

将 L 列表的元素重复 n 次

>>> L1*=2

L1
[‘C’, ‘Go’, ‘C’, ‘Go’]

L.append(x)

在 L 列表最好添加元素 x

>>> L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’]

L.append(‘Python’)
L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.clear()

删除列表 L 的所有元素

>>> L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.clear()
L
[]

L1 = L.copy()

复制 L 列表生成新的 L1 列表

>>> L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L1 = L.copy()
L1
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.insert(i,x)

在列表 L 的第 i 位置增加元素 x

>>> L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.insert(2,‘PHP’);L
[‘C’, ‘JavaScript’, ‘PHP’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.pop(i)

将列表 L 中的第 i 项元素删除

L;L.pop(2);
[‘C’, ‘JavaScript’, ‘PHP’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]
‘PHP’
L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.remove(x)

将列表的第一个 x 元素删除

>>> L
[‘C’, ‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.remove(‘C’)
L
[‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]

L.reverse(x)

将列表 L 中的元素反转

L;L.reverse();L
[‘JavaScript’, ‘Java’, ‘Ruby’, ‘Lua’, ‘C’, ‘Go’, ‘Python’]
[‘Python’, ‘Go’, ‘C’, ‘Lua’, ‘Ruby’, ‘Java’, ‘JavaScript’]

L.sort()

将列表 L 的元素按首字母顺序排序

L.sort()
L
[‘C’, ‘Go’, ‘Java’, ‘JavaScript’, ‘Lua’, ‘Python’, ‘Ruby’]

L.index(x)

获取列表 L 的 x 元素的索引号

L.index(‘Python’)
5
L
[‘C’, ‘Go’, ‘Java’, ‘JavaScript’, ‘Lua’, ‘Python’, ‘Ruby’]

对列表数字执行简单统计计算

digits = [1,23,434,55,44,67]
min(digits)
1
max(digits)
434
sum(digits)
624
列表相关练习

练习 1:创建一个列表,其中包含数字 1-100 并打印出来然后计算列表数字的总值。

digits = [value for value in range(1,101)];sum(digits)
5050
练习 2:求 1-20 的奇数

for i in range(1,21,2):
print(i)

1
3
5
7
9
11
13
15
17
19
练习 3: 输出 3-30 以内能被 3 整除的数字

lists = [n for n in range(3,31)]
lists
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
for i in lists:
if i % 3 == 0:
print(i)

3
6
9
12
15
18
21
24
27
30
2.3 序列类型之元组
元组其实跟列表差不多,也是存一组数据,只不过它一旦创建便不能修改,所以又叫只读列表
它只有两个方法,一个是 count(统计元组某个元素出现的次数 tuple.count(‘str’)),一个是 index(查看某个元素的索引号 tuple.index(‘str’))

names = (‘zhiwenwei’,‘zhouyouxian’)
names.index(‘zhiwenwei’)
0
names.count(‘zhiwenwei’)
1
元组练习题

有如下变量,请实现要求的功能
tu = (“alex”, [11, 22, {“k1”: ‘v1’, “k2”: [“age”, “name”], “k3”: (11,22,33)}, 44])
a. 请问 tu 变量中的第一个元素 “alex” 是否可被修改?
  元组不可直接被修改,需要转换成列表或字典
b. 请问 tu 变量中的 "k2" 对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
  k2 是字典的键,对应的值是列表可修改:tu[1][2]['k2']=‘Seven’
c. 请问 tu 变量中的 "k3" 对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素 “Seven”
  k3 是字典的键,对应的值是元组不可修改
2.4 字典类型
字典是包含 0 个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。

Python 语言中通过字典实现映射,通过大括号 {} 建立,建立模型如下:

{键 1:值 1,键 2:值 2,…}

city = {‘中国’:‘北京’,‘美国’:‘纽约’,‘法国’:‘巴黎’}
city
{‘中国’: ‘北京’, ‘美国’: ‘纽约’, ‘法国’: ‘巴黎’}
拓展:字典是无序的。python 语言中,字符串、列表、元组都是采用数字索引,字典采用字符索引。

字典的函数和方法

字典的基本原则

字典是一个键值对的集合,该集合以键为索引,一个键对应一个值信息

字典中的元素以键信息为索引访问

字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

2.5 jieba 库基本介绍
jieba 库提供三种分词模式,最简单只需要掌握一个函数;

jieba 是优秀的中文分词第三方库,需额外安装

jieba 库的安装方法

pip install jieba
jieba 分词的三种模式

精确模式:把文本精确切分,不存冗余单词

word1 = jieba.lcut(“python 无所不能!除了生不出孩子, 我们应该学习使用它!”)
Building prefix dict from the default dictionary …
Dumping model to file cache /tmp/jieba.cache
Loading model cost 1.832 seconds.
Prefix dict has been built succesfully.
print(word1,type(word1))
[‘python’, ‘无所不能’, ‘!’, ‘除了’, ‘生不出’, ‘孩子’, ‘,’, ‘我们’, ‘应该’, ‘学习’, ‘使用’, ‘它’, ‘!’] <class ‘list’>