博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python全栈开发 day2 - 数据类型详解
阅读量:4983 次
发布时间:2019-06-12

本文共 6191 字,大约阅读时间需要 20 分钟。

一、数字 Number

Python3 支持 int、float、bool、complex(复数)。

1. int、float、complex

python3 中所有的整型都是 int 类型,不再有长整型的概念。

a = 4print(type(a))  # 内置type()函数可以用来查询变量类型print(isinstance(a, int))  # isinstance()函数用来判断变量类型print(a.bit_length())  # 转换成二进制位至少需要几位  4 -- 100# type 和 isinstance 的区别:isinstance认为子类是一种父类型,type认为子类不是一种父类型class A:    passclass B(A):    passprint(isinstance(A(), A))   # Trueprint(isinstance(B(), A))   # Trueprint(type(A())==A)         # Trueprint(type(B())==A)         # False
a = 12-36jprint(type(a))print(a.real)   # 返回实数部分print(a.imag)   # 返回虚数部分

2. bool

Python3 中把 True 和False 定义为关键字,值为1 和 0,可以和数字进行运算,所以暂时咱们先把它归为数字类型。

a = Trueprint(a)

二、字符串 String

字符串在内存中一旦创建则不可修改,若修改则会重新创建一个字符串。

a = "  hello World   "print(type(a))print(len(a))       # 获取字符串长度print(a[3])print(a[3:7])       # 字符串切片,获取子串,左闭右开print(a.split(" "))         # 以 " "分割字符串,并返回一个列表print(a.strip())         # 去除左右空白,可指定去除字符  a.lstrip(" ")  a.rstrip(" ")print("_".join(a))          # 将字符串中的每个元素按指定分隔符进行拼接print(a.find("or"))         # 查找子串“he”出现的位置,未找到返回 -1print(a.count("o", 0, 8))         # 计算子字符串出现的次数,可以设置查找的起始位置print(a.replace("o", "cccc", 1))   # 替换字符串,可指定替换次数,1表示只替换第一个print(r"dfdfdf\n")      # 加上r表示将字符串原样输出for i in a:    print(i)print(a.capitalize())       # 首字母大写print(a.casefold())         # 转小写(包括一些特殊的定义关系)print(a.islower())print(a.lower())            # 将字符串中大写转为小写print(a.isupper())print(a.upper())            # 将字符串中小写转为大写print(a.center(20, "-"))    # 设置显示宽度,字符串居中,空白位用 - 代替print(a.endswith("a"))      # 字符串是否以‘a’结尾print(a.startswith("a"))    # 字符串是否以‘a’开头print(a.index("or"))        # 查找子串“he”出现的位置,找不到会报错,请使用findprint(a.isalnum())          # 判断字符串中是否只存在数字和字母print(a.isalpha())          # 判断字符串中是否只存在字母和汉字b = "123①"print(b.isdecimal())        # 判断字符串是否是数字print(b.isdigit())          # 判断字符串是否是数字,包括①print(a.ljust(20, "*"))     # 输出长度20,左侧填充 *print(a.rjust(20, "*"))# 使用 \t 分割字符串,每个子串占位 20 ,可用来以表格的样式显示数据b = "username\tpassword\temail\nzhangsan\t123456\t12@qq.com\nlisi\tadmin\t56245@qq.com"print(b.expandtabs(20))

三、列表List

列表使用方括号括起来,逗号分隔,可迭代。列表中的元素可以是任意类型

li = [123, "hello", True, 87, "ear", 123.32, "哈哈", [234, "fdf"]]print(li[0])print(li[2:4])# list可以通过索引、切片的方式进行删除、修改等操作li[0] = 100         # 修改一li[0:2] = [34, 54]   # 修改二del li[0]   # 删除del li[0:2]   # 删除print(li)li.insert(1, "热")     # 在index=1的位置插入数据print(li)print(li.index("哈哈"))  # 获取当前值的索引位置,找到第一个就停止li2 = li.copy()         # 浅拷贝print(li2)print(li.count(87))     # 计算元素出现的次数li.append("地方")        # 追加,把传入对象当做一个值添加到列表中# li.append(["湖南", "长沙臭豆腐"])print(li)li.extend(["湖南", "长沙臭豆腐"])  # 把传入的可迭代对象的每一个值循环取出并添加到列表中print(li)print(li.pop(2))   # 删除index=2的值并返回被删除的值,默认删除最后一个print(li)li.remove("哈哈")  # 删除指定值,删除第一个后则停止print(li)li.reverse()       # 列表反转print(li)li = [123, 45, 4, 123, 454, 656, 0]li.sort(reverse=True)          # 列表排序,默认从小到大,reverser=True表示从大到小print(li)print(len(li))  # 列表长度print(max(li))  # 列表最大值print(min(li))  # 列表最小值li.clear()                  # 清空
# enumerate 为一个可迭代对象添加序号,默认编号从0开始,可以之定义编号li = ["苹果", "香蕉", '梨', '葡萄']for k, i in enumerate(li, 1):    print(k, i)
n1 = {
"k1": "wu", "k2": 123, "k3": ["alex", 456]}n2 = n1.copy() # 浅拷贝n3 = copy.deepcopy(n1) # 深拷贝n1["k3"][0] = "admin"print(n2)print(n3)
li = []for i in range(10):    li.append(i)print(li)# 列表解析li = [i for i in range(12)]print(li)

四、元组 Tuple

元组由括号括起来,逗号分隔,元组不可被修改,可迭代。写元组时最好在最后增加一个,方便和函数进行区分。

tu = ()      # 创建空元组del tu       # 删除元组v1 = (12,)   # 创建含有一个元素的元组v = (123, "hello", True, 87, "ear", 123.32, "哈哈", [234, "fdf"],)print(v[2:4])print(v.count("哈哈"))    # 计算 "哈哈" 出现的次数print(v.index("ear"))     # 查找 "ear" 出现的indexfor i in v:    print(i)v[7].reverse()  # 元组的一级元素不可修改,但可以对元组内部的列表进行修改print(v)print(v + v1)   # 元组不可修改,但可以进行连接组合,生成一个新的元组

五、集合 Set

有不同的元素组成,无序、不可变(只能存放数字、字符串、元组)。

# 创建集合1q = set()   # 创建空集合,必须用set()创建# 创建集合2s = {1, 2, 3, 4, 5, 6, 3}   # 自动去重print(s)# 更新集合s.add("24")     # 增加元素print(s.pop())  # 随机删除元素并返回删除的值s.remove(5)     # 删除指定元素,不存在时会报错s.discard(6)    # 删除指定元素,不存在时不做操作s.update([345454, 56])          # 添加多个值# s.clear()     # 清空集合t = {2, 7, 3, 45, 75, 6}print(s.union(t))               # 并集    s | tprint(s.intersection(t))        # 交集    s & tprint(s.difference(t))          # 差集 s-qprint(s.symmetric_difference(t))  # 交叉补集,只存在任一集合的数据print(s.issuperset(t))          # q 是 s 的父集print(s.issubset(t))            # q 是 s 的子集print(s)p = frozenset("Hello")          # 生成不可变集合print(p)print(set("123") == set("123123"))  # True {'3', '1', '2'} == {'3', '1', '2'}print(set("123") < set("12345"))    # True

六、字典 Dictionary

字典是一种可变容器模型,可以存储任意类型对象。整个字典包括在一个 { }中,每个键值对用 :分隔,每个键值对之间用,分隔。字典的键必须唯一。

# 字典的键值必须唯一,且不可变,故可以使用数字、字符串、元组充当键值# 若字典中同一个键出现两次,则后一个被记住dic = {
"name": "zhangsan", "age": 23, "address": "长沙"}print(dic['name']) # 取值print(dic.get("age")) # 取值dic["name"] = "lisi" # 修改值del dic['address'] # 删除dic2 = dic.copy() # 字典浅复制print(dic2)dic3 = dict.fromkeys(["email", "phone", "school"], 123) # 生成新的字典,默认值为123print(dic3)for key in dic: print(dic.get(key))

七、深拷贝、浅拷贝

1. 浅拷贝

a = [[1, 2], 3, 4]b = a.copy()    # 浅拷贝,只拷贝第一层内存地址b[1] = 5b[0][0] = 8print(b)    # [[8, 2], 5, 4]print(a)    # [[8, 2], 3, 4]

2. 深拷贝

import copya = [[1, 2], 3, 4]# b = copy.copy(a)      # 浅拷贝b = copy.deepcopy(a)    # 深拷贝b[1] = 5b[0][0] = 8print(b)    # [[8, 2], 5, 4]print(a)    # [[1, 2], 3, 4]

八、习题

1. 实现一个简单的整数加法计算器

# 实现一个简单的整数加法计算器while True:    add_sum = 0    content = input("请输入整数加法运算(输入q退出):")    if content == "q":        break    li = content.split("+")    for i in li:        if i == "" or (not i.isdecimal()):            print("表达式有误,请重新输入")            break        add_sum += int(i)        if i == li[len(li)-1]:            print("sum = ", add_sum)

2.  制作随机验证码,不区分大小写

# 用户执行程序,给用户提示需要输入的验证码,输入与显示一致时提示正确,否则重新生成验证码等待输入

import randomdef check_code():    code = ""    for i in range(4):        current = random.randrange(0, 4)        if current != i:            temp = chr(random.randint(65, 90))        else:            temp = random.randint(0, 9)        code += str(temp)    return codewhile True:    code = check_code()    print("本次验证码为:" + code)    input_code = input("请输入验证码:")    if input_code.upper() == code or input_code.lower() == code:        print("验证通过")        break

 

转载于:https://www.cnblogs.com/sharef/p/9415183.html

你可能感兴趣的文章
Asp.net 2.0在Windows 2003 Server 上配置Microsoft Excel、Microsoft Word应用程序权限时 error: 8000401a 的解决方法!...
查看>>
SDUT 识别浮点常量问题 编译原理作业
查看>>
BZOJ 2819: Nim dfs序维护树状数组,倍增
查看>>
WinRAR(5.21)-0day漏洞-始末分析
查看>>
终端检测HTTPS服务端
查看>>
证件照换底色
查看>>
Candies
查看>>
EAS部署:linux 下安装EAS后启动不了服务
查看>>
[BZOJ3244][NOI2013] 树的计数
查看>>
[web]python3一句话开启http服务
查看>>
基于 控制台 简易 学生信息管理系统 (增、删、改)
查看>>
Cannot add foreign key constraint 错误解决办法
查看>>
To-Read List
查看>>
PHP漏洞全解(三)-客户端脚本植入
查看>>
重载类型运算符
查看>>
poj2676
查看>>
工作时候需要学习的东西
查看>>
Win8安装教程!笔记本用U盘安装Win8只需三步
查看>>
C语言中的字符串常量
查看>>
awk分隔符设定为多个字符或字符串
查看>>