第二章 Python 数据类型
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
上一篇讲了python的安装、简单运行、注释、代码块、全局和局部变量
这一篇讲python的数据类型,大致分为七种类型
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据类型
虽然分很多类型,但是声明变量不需要声明数据类型
数据类型 | 关键字 |
---|---|
文本类型: | str |
数值类型: | int, float, complex |
序列类型: | list, tuple, range |
映射类型: | dict |
集合类型: | set, frozenset |
布尔类型: | bool |
二进制类型: | bytes, bytearray, memoryview |
示例 | 数据类型 |
---|---|
x = “Hello World” | str |
x = 29 | int |
x = 29.5 | float |
x = 1j | complex |
x = [“apple”, “banana”, “cherry”] | list |
x = (“apple”, “banana”, “cherry”) | tuple |
x = range(6) | range |
x = {“name” : “Bill”, “age” : 63} | dict |
x = {“apple”, “banana”, “cherry”} | set |
x = frozenset({“apple”, “banana”, “cherry”}) | frozenset |
x = True | bool |
x = b"Hello" | bytes |
x = bytearray(5) | bytearray |
x = memoryview(bytes(5)) | memoryview |
设定特定的数据类型
如果希望指定数据类型,则您可以使用以下构造函数:
示例 | 数据类型 |
---|---|
x = str(“Hello World”) | str |
x = int(29) | int |
x = float(29.5) | float |
x = complex(1j) | complex |
x = list((“apple”, “banana”, “cherry”)) | list |
x = tuple((“apple”, “banana”, “cherry”)) | tuple |
x = range(6) | range |
x = dict(name=“Bill”, age=36) | dict |
x = set((“apple”, “banana”, “cherry”)) | set |
x = frozenset((“apple”, “banana”, “cherry”)) | frozenset |
x = bool(5) | bool |
x = bytes(5) | bytes |
x = bytearray(5) | bytearray |
x = memoryview(bytes(5)) | memoryview |
数字
Python 中有三种数字类型:
int # 整型
float # 浮点
complex # 复数
为变量赋值时,将创建数值类型的变量:
x = 10 # int
y = 6.3 # float
z = 2j # complex
可以使用 int()、float() 和 complex() 方法从一种类型转换为另一种类型:
x = 10 # int
y = 6.3 # float
z = 1j # complex
# 把整数转换为浮点数
a = float(x)
# 把浮点数转换为整数
b = int(y)
# 把整数转换为复数:
c = complex(x)
print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))
随机数
随机数需要引入专门的模块
Python 没有 random() 函数来创建随机数,但 Python 有一个名为 random 的内置模块,可用于生成随机数:
import random
#十以内随机数
print(random.randrange(1,10))
字符串
字符串字面量
python 中的字符串字面量由单引号或双引号括起。
‘hello’ 等同于 “hello”。
您可以使用 print() 函数显示字符串字面量:
多行字符串
您可以使用三个引号将多行字符串赋值给变量:
a = """Python is a widely used general-purpose, high level programming language.
It was initially designed by Guido van Rossum in 1991
and developed by Python Software Foundation.
It was mainly developed for emphasis on code readability,
and its syntax allows programmers to express concepts in fewer lines of code."""
print(a)
字符串是数组
同java一样,Python 中的字符串是表示 unicode 字符的字节数组。
但是,Python 没有字符数据类型,单个字符就是长度为 1 的字符串。
方括号可用于访问字符串的元素。
a = "Hello, World!"
print(a[1])
# e
裁切
您可以使用裁切语法返回一定范围的字符。
指定开始索引和结束索引,以冒号分隔,以返回字符串的一部分。
#获取从位置 2 到位置 5(不包括)的字符:
b = "Hello, World!"
print(b[2:5])
# llo
负的索引
使用负索引从字符串末尾开始切片:
获取从位置 5 到位置 1 的字符,从字符串末尾开始计数:
b = "Hello, World!"
print(b[-5:-2])
#orl
python一些内置字符串函数
注释:所有字符串方法都返回新值。它们不会更改原始字符串。
方法 | 描述 |
---|---|
capitalize() | 把首字符转换为大写。 |
casefold() | 把字符串转换为小写。 |
center() | 返回居中的字符串。 |
count() | 返回指定值在字符串中出现的次数。 |
encode() | 返回字符串的编码版本。 |
endswith() | 如果字符串以指定值结尾,则返回 true。 |
expandtabs() | 设置字符串的 tab 尺寸。 |
find() | 在字符串中搜索指定的值并返回它被找到的位置。 |
format() | 格式化字符串中的指定值。 |
format_map() | 格式化字符串中的指定值。 |
index() | 在字符串中搜索指定的值并返回它被找到的位置。 |
isalnum() | 如果字符串中的所有字符都是字母数字,则返回 True。 |
isalpha() | 如果字符串中的所有字符都在字母表中,则返回 True。 |
isdecimal() | 如果字符串中的所有字符都是小数,则返回 True。 |
isdigit() | 如果字符串中的所有字符都是数字,则返回 True。 |
isidentifier() | 如果字符串是标识符,则返回 True。 |
islower() | 如果字符串中的所有字符都是小写,则返回 True。 |
isnumeric() | 如果字符串中的所有字符都是数,则返回 True。 |
isprintable() | 如果字符串中的所有字符都是可打印的,则返回 True。 |
isspace() | 如果字符串中的所有字符都是空白字符,则返回 True。 |
istitle() | 如果字符串遵循标题规则,则返回 True。 |
isupper() | 如果字符串中的所有字符都是大写,则返回 True。 |
join() | 把可迭代对象的元素连接到字符串的末尾。 |
ljust() | 返回字符串的左对齐版本。 |
lower() | 把字符串转换为小写。 |
lstrip() | 返回字符串的左修剪版本。 |
maketrans() | 返回在转换中使用的转换表。 |
partition() | 返回元组,其中的字符串被分为三部分。 |
replace() | 返回字符串,其中指定的值被替换为指定的值。 |
rfind() | 在字符串中搜索指定的值,并返回它被找到的最后位置。 |
rindex() | 在字符串中搜索指定的值,并返回它被找到的最后位置。 |
rjust() | 返回字符串的右对齐版本。 |
rpartition() | 返回元组,其中字符串分为三部分。 |
rsplit() | 在指定的分隔符处拆分字符串,并返回列表。 |
rstrip() | 返回字符串的右边修剪版本。 |
split() | 在指定的分隔符处拆分字符串,并返回列表。 |
splitlines() | 在换行符处拆分字符串并返回列表。 |
startswith() | 如果以指定值开头的字符串,则返回 true。 |
strip() | 返回字符串的剪裁版本。 |
swapcase() | 切换大小写,小写成为大写,反之亦然。 |
title() | 把每个单词的首字符转换为大写。 |
translate() | 返回被转换的字符串。 |
upper() | 把字符串转换为大写。 |
zfill() | 在字符串的开头填充指定数量的 0 值。 |
注意:所有字符串方法都返回新值。它们不会更改原始字符串。
布尔
布尔表示两值之一:True 或 False。
除空字符串外,任何字符串均为 True。
除 0 外,任何数字均为 True。
除空列表外,任何列表、元组、集合和字典均为 True。
集合数据(我没老师培训,我自认为可以像java一样统一归纳成集合数据)
Python 编程语言中有四种集合数据类型:
列表(List)是一种有序和可更改的集合。允许重复的成员。
元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。
集合(Set)是一个无序和无索引的集合。没有重复的成员。
词典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员。
选择集合类型时,了解该类型的属性很有用。
为特定数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。
列表list
列表是一个有序且可更改的集合。在 Python 中,列表用方括号编写。
x=['1','12','13']
print(x)
列表可根据索引直接访问数据,这一点很像java的数组
但python更简单的是可以直接获取指定索引范围的数据
例如
print(x[1])
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
print(thislist[-4:-1])
同样列表也支持一些内置的函数
方法 | 描述 |
---|---|
append() | 在列表的末尾添加一个元素 |
clear() | 删除列表中的所有元素 |
copy() | 返回列表的副本 |
count() | 返回具有指定值的元素数量。 |
extend() | 将列表元素(或任何可迭代的元素)添加到当前列表的末尾 |
index() | 返回具有指定值的第一个元素的索引 |
insert() | 在指定位置添加元素 |
pop() | 删除指定位置的元素 |
remove() | 删除具有指定值的项目 |
reverse() | 颠倒列表的顺序 |
sort() | 对列表进行排序 |
元组tuple
元组tuple是一种有序且不可更改的集合数据类型,用()表示
例如
x=('ni','ba','shi','wo')
print(type(x))
元组必须有逗号
x=('1') ×
x=('1',) √
元组的特性不可更改,但是想更改怎么办,可以进行类型转换
x=('a','b','c','d')
y=list(x)
y.append('aa')
y[-2]='aaa'
x=tuple(y)
print(x)
元组同list获取数据的方式一样
合并元组可以用 + 来实现
x=(1,2,3)
y=(4,)
print(x+y)
元组可以通过delete 关键字删除
元组支持方法
方法 | 描述 |
---|---|
len() | 获取长度 |
count() | 返回元组中指定值出现的次数。 |
index() | 在元组中搜索指定的值并返回它被找到的位置。 |
集合Set
集合是无序和无索引的集合。在 Python 中,集合用花括号编写。
set是无序的,so不能通过索引访问数据
x={1,2,3}
print(type(x))
访问数据就用for循环遍历访问
thisset = {"apple", "banana", "cherry"}
for x in thisset:
print(x)
set一旦添加就无法修改内容但是可以继续添加
更改项目
集合一旦创建,您就无法更改项目,但是您可以添加新项目。
要将一个项添加到集合,请使用 add() 方法。
要向集合中添加多个项目,请使用 update() 方法。
thisset = {"apple", "banana", "cherry"}
for x in thisset:
print(x)
thisset.add("orange")
thisset.update(["orange", "mango", "grapes"])
print(thisset)
ps: 无序!
Set的一些方法
方法 | 描述 |
---|---|
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() | 用此集合和其他集合的并集来更新集合。 |
字典Dictionary
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
可以看做hashMap
样子挺像json的
字典很简单 看看代码就能明白
thisdict = dict(brand="Porsche", model="911", year=1963)
# 请注意,关键字不是字符串字面量
# 请注意,使用了等号而不是冒号来赋值
print(thisdict)
thisdict = {
"brand": "Porsche",
"model": "911",
"model1": "911",
"year": 1963
"test":"aaa"
}
x = thisdict["model"]
x = thisdict.get("model")
thisdict["year"] = 2019
thisdict.pop("model1")
thisdict.popitem()
thisdict["color"] = "red"
if "model" in thisdict:
print("Yes, 'model' is one of the keys in the thisdict dictionary")
for x in thisdict:
print(x)
for x in thisdict:
print(thisdict[x])
for x in thisdict.values():
print(x)
for x, y in thisdict.items():
print(x, y)
print(thisdict)
Dictionary方法
方法 | 描述 |
---|---|
clear() | 删除字典中的所有元素 |
copy() | 返回字典的副本 |
fromkeys() | 返回拥有指定键和值的字典 |
get() | 返回指定键的值 |
items() | 返回包含每个键值对的元组的列表 |
keys() | 返回包含字典键的列表 |
pop() | 删除拥有指定键的元素 |
popitem() | 删除最后插入的键值对 |
setdefault() | 返回指定键的值。如果该键不存在,则插入具有指定值的键。 |
update() | 使用指定的键值对字典进行更新 |
values() | 返回字典中所有值的列表 |
二、类型转换
1.类型转换casting
有时您可能需要为变量指定类型。这可以通过 casting 来完成。 Python 是一门面向对象的语言,因此它使用类来定义数据类型,包括其原始类型。
因此,使用构造函数完成在 python 中的转换:
int() - 用整数字面量、浮点字面量构造整数(通过对数进行下舍入),或者用表示完整数字的字符串字面量
float() - 用整数字面量、浮点字面量,或字符串字面量构造浮点数(提供表示浮点数或整数的字符串)
str() - 用各种数据类型构造字符串,包括字符串,整数字面量和浮点字面量
x = float(1) # x 将是 1.0
y = float(2.5) # y 将是 2.5
z = float("3") # z 将是 3.0
w = float("4.6")# w 将是 4.6
x = int(1) # x 将是 1
y = int(2.5) # y 将是 2
z = int("3") # z 将是 3
x = str("S2") # x 将是 'S2'
y = str(3) # y 将是 '3'
z = str(4.0) # z 将是 '4.0'
总结
有朝一日龙抬头,定叫长江水倒流