系列文章目录
第一章 Python基础入门之Hello World
第一章 Python基础入门之变量与数据类型
第一章 Python基础入门之ASCII(字符编码和二进制)
第一章 Python基础入门之单多行的注释和输出
第一章 Python基础入门之INPUT用户输入
第一章 Python基础入门之IF ELSE条件判断
第一章 Python基础入门之While循环与For循环
第一章 Python基础入门之什么是模块(库)
第一章 Python基础入门之什么是.pyc
第一章 Python基础入门之数据类型
前言
Python系列学习
一、相关内容
1、数值型
- int(整型):在32位机器上,整数的位数是32位,取值范围是-231231-1,即-2147483648214748364;在64位系统上,整数的位数为64位,取值范围为:263至263-1,即9223372036854775808~9223372036854775807。
- long(长整型):Python3中没有该类型了。Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。
- float(浮点型):浮点型也就是带有小数点的数,其精度和机器有关。
- complex(复数):Python还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。
int(100)
float(6.5)
complex(18.2)
2、布尔型
- 真或假(True或False)
- 1或0
- 和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。
True
False
3、字符串
- 在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号。Python中的字符串有两种数据类型,分别是str类型和unicode类型,str类型采用的ASCII编码,无法表示中文,unicode类型采用unicode编码,能够表示任意字符,包括中文和其他语言。
#(1)一些用于字符串的语法
sex = 'women'
print(sex.capitalize()) # 首字母大写
print(sex.count('e')) # 统计字符串中e的个数
print(sex.center(50, '-')) # 打印50个字符,women放在中间,其他使用-补充
print(sex.endswith('en')) # 判断字符串是否以en结尾,返回true或false
sex1 = 'wo\tmen'
print(sex1.expandtabs(tabsize=30)) # 变量sex = 'wo\tmen',指把‘\t’转成30个空格
print(sex.find('me')) # 返回m字母对应的索引号,即返回首字母的索引号
name = '我的名字是:{name},{year}岁'
print(name.format(name='ganbailin', year='26'))
print(name.format_map({'name': 'gan', 'year': 27}))
print(sex.isalnum())
print(sex.isalpha())
print(sex.isdecimal()) # 判断变量sex是否是一个小数
print(sex.isdigit()) # 判断变量sex是否是一个整数
print(sex.isidentifier()) # 判断变量sex是否是一个合法的标识符
print(sex.islower()) # 判断变量sex是否是小写字母
print(sex.isupper()) # 判断变量sex是否是大写字母
print(sex.isspace()) # 判断变量sex是否是空格
print(sex.istitle())
print('+'.join(['1', '2', '3'])) # 对列表每个字符串的间隔之间加入一个+或其他。注意:列表中不能是数字
print(sex.ljust(50, '*')) # 使变量sex的字符串长度是50,若不足在右边使用*补足
print(sex.rjust(50, '*')) # 使变量sex的字符串长度是50,若不足在左边使用*补足
print(' Gauk'.lstrip()) # 去掉左边的空格
print('Gskk '.rstrip()) # 去掉右边的空格
print(' Gdkk '.strip()) # 去掉两边的空格
print('gshhs'.replace('h', 'H', 1)) # 替换字符串
print('hshhdsajjhhi'.rfind('h')) # 返回在最右的h得到下标
print('1+2+3+4+5'.split('+')) # 按照+号分割字符,并返回列表默认按照空格分割
print('hshhyuyhydyyahyyyyytdtw'.split('h')) # 按照h分割字符,并返回列表默认按照空格分割
print('js\njd'.splitlines()) # 遇到换行符\n时,则分割,并返回列表
print('udfu'.swapcase()) # 返回大写
print('udjus'.title()) # 返回标题形式,首字母大写
4、列表
- 列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型,可对集合进行创建、查找、切片、增加、修改、删除、循环和排序操作。
names = ['zhdeffng', 'ganbsskks', 'xiddafffg', 'tdkdu', 'xiepeskskng']
print(names) # 输入列表中所有名称(查)
print(names[0], names[2]) # 输入列表中特定名称(查)
print(names[1:3]) # 切片 从左往右,相对于1<=rank<3。输入列表中范围名称(查)
print(names[:3]) # 切片 从左往右,相对于0<=rank<3。输入列表中范围名称(查)
print(names[-2:]) # 切片 从右往左,从左数起是从-1开始的,相当于-2<=范围<=-1 。输入列表中范围名称(查)
names.append('zhaotingting') # 在列表最后追加一个名称(增)
names.insert(1, 'xiaopeng') # 插入一个名称,1代表要插入所在的位置(增)
names[2] = 'xiepengcheng' # 修改列表中的某个名称,2代表被修改名称的位置(改)
names.remove('tanyu') # 删除掉某个名称(删)
del names[1] # 删除某个名称,1代表被删除的位置(删)
names.pop() # 当在括号里面不输入下标数字时,默认删除最后一个(删)
print(names)
print(names.index('xiaohong')) # 输出列表中某个名称的位置(查)
print(names[names.index('xiepengcheng')]) # 根据名称先查询到位置,再根据位置输出名称(查)
print(names.count('xiepengcheng')) # 统计列表中有多少个xiepengcheng(查)
names.clear() # 清空列表中的所有名称(删)
names.reverse() # 把列表中的名称顺序反转过来(查)
names.sort() # 把列表中的名称排序,按照ASCII码排序(查)
print(names)
names2 = [1, 2, 3, 4, 5] # 新建一个列表names2
names.extend(names2) # 把names2中的值扩展到names中(增)
print(names, names2) # 即便把names2扩展到names中了,names2依然还存在的
del names2 # 当删掉names2后才会不存在
print(names)
names3 = names.copy() # 新建一个列表从names列表中复制
print(names3)
# 浅copy
import copy
person = ['name', ['a', 100]]
p1 = copy.copy(person) # 浅copy的三种方式之一
p2 = person[:] # 浅copy的三种方式之一
p3 = list(person) # 浅copy的三种方式之一
print(p1, p2, p3)
# 列表中放一个小列表
names4 = ['zhdfng', 'gafrfn', 'xfefg', ['lilfewfng', 'gafsfiyi'], 'tfeffu', 'xifewfng']
print(names4[3][0])
names5 = names4
names4[3][1] = '时间节点'
print(names4)
# 单值与列表的区别
# (1)当是单值(数字或者字符串)时:
a = 1
b = a
a = 3
print(b) # 当单值(数字或者字符串)时,即使a的值变化了,b还是1
# (2)当是列表时:
a = [1, 2, 3]
b = a
a[1] = 333
print(b) # 当是列表时,a变化了,b也是跟着变化,输出是[1,333,3]
# 循环输出列表
for i in names4:
print(i)
# 间隔输出列表中的值
print(names4[0:-1:2]) # 第一种写法:0代表第一个,-1代表最后一个,2代表间隔。
print(names4[::2]) # 第二种写法:意思同上,省略了0和-1
5、元组
- 元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的,元组用”()”标识,内部元素用逗号隔开。
- 元组与列表的作用是一样的,主要区别是:元组不能增、删、改,只能查。所以元组也叫只读列表元组只有2个方法,一个是count ,另一个是index
tuple = (8, 9, 14, 25, 36)
6、字典
- 字典是一种键值对的集合,是除列表以外Python之中最灵活的内置数据结构类型,列表是有序的对象集合,字典是无序的对象集合(即没有下标)。
# dict = {key:value}
info = {
'stu01': 'xiedfffng',
'stu02': 'lifefesdfsng',
'stu03': 'gafewffn'
}
# (1)增删改查
print(info)
print(info['stu01']) # 查看
info['stu04'] = 'gdfsdfn' # 增加
print(info)
info['stu01'] = '杰克森k' # 修改
print(info)
# del info['stu01'] #删除
print(info)
# info.popitem() #删除
print(info)
info.pop('stu02') # 删除(标准的,经常使用)
print(info)
print(info.get('stu03')) # 获取(查看)
#(2)多级字典嵌套及操作(嵌套列表)
catalog = {
'trining1': {
'day1': ['hello world', '定义变量', '字符编码和二进制'],
'day2': ['单多行的注释和输出', '用户输入', '流程判断'],
'day3': ['while循环', 'for循环', '什么是模块']
},
'trining2': {
'day4': ['什么是pyc', '数据类型', '练习'],
'day5': ['结束', '好的哈哈', '哈一样']
}
}
print(catalog.get('trining1').get('day1')) # 查-
catalog['trining2']['day5'][0] = '多级字典' # 修改
print(catalog)
#(3)字典常用的方法
print(info.values()) # 只输出字典的值
print(info.keys()) # 只输出字典的key
catalog.setdefault('trining3', {'day6': ['uusha', 'jjf', 'hyst']}) # 该方法是指:判断字典中是
# 否有trining3,如果有则输出的是字典的原有。如果没有,则创建一个新的trining的key和value
print(catalog)
info2 = {
'stu01': 'linchunlian',
'new1': 'xiaohong',
'new2': 'zhaotingting'
}
info.update(info2) # 该方法指:字典info2中如果相同的key而value变化就改变值。如果字典info2中有新的key
# 和value就新增到字典info中。(起“更新并且合并”作用)
print(info)
info3 = dict.fromkeys([6, 7, 8]) # 创建一个新的字典,key是7,8,9。value都是null.几个key对应
# 的value都是相同的,即使value修改后也都是相同
print(info3)
info4 = dict.fromkeys([4, 5, 6], 'test') # 创建一个新的字典,key是4,5,6。value都是test.几个key对应
# 的value都是相同的,即使value修改后也都是相同
print(info4)
print(info.items()) # 把字典转成列表
#(4)字典的循环
for i in info:
print(i, info[i]) # 如果只输出i就只输出key,info[i]代表value
for k, v in info.items(): # 该循环是把字典转换为列表后再输出。注意:上面的循环比该循环更高效
print(k, v)
#(5)三级菜单实例
data = {
'广东': {
'深圳':['福田区', '南山区', '宝安区'],
'广州':['天河区', '白云区'],
'东莞':['常平镇', '莞城']
},
'北京': {
'点击':['世界上市', '为例', '奥我'],
'等级':['市中心', '郊区']
}
}
exit_flag = False
while not exit_flag:
for a in data:
print(a)
choice1 = input('请输入省份:')
if choice1 in data:
while not exit_flag:
for b in data[choice1]:
print('\t', b)
choice2 = input('请输入城市:')
if choice2 in data[choice1]:
while not exit_flag:
for c in data[choice1][choice2]:
print('\t\t', c)
choice3 = int(input("请输入区域:"))
if choice3 in data[choice1][choice2]:
for d in [choice1][choice2][1]:
print('最终为:',d)
choice4 = input('最后一层了,选择:返回/继续')
if choice4 == '返回':
pass
elif choice4 == '继续':
exit_flag = True
if choice4 == '返回':
break
elif choice4 == '继续':
exit_flag = True
if choice4 == '返回':
break
elif choice4 == '继续':
exit_flag = True
7、集合
- 集合是一个无序的、不重复的数据组合,它的主要作用有两个,分别是去重和关系测试。
#(1)创建集合
set111 = {845, 7441, 958, 444, 4}
print(set111)
#(2)集合可以起到去重的作用。如下一个列表是有重复的值的,转换为集合后可以去重
list_1 = [1,2,3,4,2,3,4,5,6,7,7,8]
set_1 = set(list_1)
print(set_1,type(set_1))
#(3)构建交集(两种写法:英文和符号)
set_2 = set([2,43,44,56,4,5,6,53,55,98])
print(set_1.intersection(set_2))
print(set_1 & set_2)
#(4)构建并集(两种写法:英文和符号)
print(set_1.union(set_2))
print(set_1 | set_2)
#(5)构建差集(两种写法:英文和符号)
print(set_1.difference(set_2)) #取出set_1中有的,而set_2中没有的集合
print(set_1 - set_2)
print(set_2.difference(set_1)) #取出set_2中有的,而set_1中没有的集合
print(set_2 - set_1)
#(6)构建子集
set_3 = set([2,3])
print(set_3.issubset(set_1)) #判断set_3是否是set_1的子集
print(set_1.issubset(set_3)) #判断set_1是否是set_3的子集
#(7)构建父集
print(set_3.issuperset(set_1)) #判断set_3是否是set_1的父集
print(set_1.issuperset(set_3)) #判断set_1是否是set_3的父集
#(8)构建对称差集(与交集的结果的相反)(两种写法:英文和符号)
print(set_1.symmetric_difference(set_2))
print(set_1 ^ set_2)
#(9)判断两个集合是否“没有交集”,如果是返回TRUE,如果不是返回FALSE
set_4 = {7,8}
print(set_1.isdisjoint(set_3))
print(set_3.isdisjoint(set_4))
#(10)添加一项
set_4.add(9)
print(set_4)
#(11)添加多项
set_4.update([10,41])
print(set_4)
#(12)删除一项
set_4.remove(41)
print(set_4)
#(13)获取长度
print(len(set_4))
#删除,和remove的区别是:使用remove时没有这个值会报错,而discard不会
print(set_4.discard('ddd'))