Python基础第三天
数值类型、序列类型、散列类型
可以表示数字、数值
int 整型>>整数
float 浮点型>>小数
bool 布尔型>>用于判断/作为数值(True/False)进行运算
可以存储多个数据的一种数据类型
序列中每个元素都有属于自己的编号
s = 'CSDN博客论坛'
print(s[0], "==", s[-8]) # 第一个字符索引值为0/-8
print(s[7], "==", s[-1]) # 起始字符索引值为7/-1
# C == C
# 坛 == 坛
可变类型:列表、字典、集合
不可变类型:数字、字符、元组
s = "hello world"
print(s)
s[0] = 'a'
print(s)
# 报错(不可变)
语法:字符串名.方法名()
范围性查找子串,返回索引值,没有返回-1。
语法:字符串名.find(str,beg=0,end=len(string))
str --> 指定检索的字符串
beg --> 开始的索引,默认为0
end --> 结束的索引,默认为字符串的长度
s = 'hello world'
print(s.find('h')) # 0
print(s.find('world')) # 6 (返回首个字符的下标)
print(s.find('worldd')) # -1
print(s.rfind('o')) # 7 (从后向前查找)
和find()基本一样,不过找不到会报错。
s = 'hello world'
print(s.index('h')) # 0
print(s.index('world')) # 6 (返回首个字符的下标)
print(s.index('worldd')) # 找不到就会报错
找到字符串个数,没有返回0。
s = 'hello world'
print(s.count('o')) # 2
去除字符串两边的空格、换行符、制表符,得到新字符串。
yzm = input('请输入四位验证码:')
data = yzm.strip() # 进行去空操作
if data == "ABCD":
print("验证码正确")
else:
print("验证码错误")
判断字符是否以XX开头/结尾、得到一个布尔值。
ad = input("请输入所在地址:")
if ad.endswith("村"):
print("农业户口")
else:
print("非农户口")
判断字符是否是数字组成,返回结果为True/False
n1 = input("请输入第一个数字:")
n2 = input("请输入第二个数字:")
if n1.isdigit() and n2.isdigit():
data = int(n1)+int(n2)
print(data)
else:
print("请正确输入数字")
将字符串变大写或小写,得到一个新字符
a = 'abc'
a1 = a.upper()
print(a1) # ABC
切分字符串,将字符串类型转列表
s = 'how are you'
print(s.split(" ")) # ['how', 'are', 'you'](以空格切分)
s = 'how,are,you'
print(s.split(",")) # ['how', 'are', 'you'](以逗号切分)
content = input('输入信息:')
content1 = content.replace("哦", "嗯!")
print(content1)
将列表类型转换为字符串
arr = ["你", "和", "我", "是好朋友"]
print("".join(arr)) # 你和我是好朋友
print("-".join(arr)) # 你-和-我-是好朋友
s = 'hello!!'
print(s[0]) # h
print(s[-3]) # o
正着数从0开始算,倒着数从-1开始算,超出报错。
查看长度
s = 'hello!'
print(len(s)) # 6
print(s[len(s)-1]) # 取最后一个值,!
print(s[-len(s)]) # 取第一个值,h
取左闭右开区间的,有步长
s = 'hello!!'
print(s[:]) # hello!!
print(s[0:5]) # hello
print(s[0:6:2]) # hlo
print(s[::-1]) # !!olleh(反向切片)
用count()普通方式
s = input('请输入一串字符:')
print('a:'+str(s.count('a')))
print('e:'+str(s.count('e')))
print('i:'+str(s.count('i')))
print('o:'+str(s.count('o')))
print('u:'+str(s.count('u')))
使用遍历
s = input('请输入一串字符:')
for i in 'aeiou':
print(i, ':', s.count(i))
存储同一个类别的数据,方便操作
animals = ['cats', 'dogs'] # 创建列表
animals.append('pigs')
print(animals)
# ['cats', 'dogs', 'pigs']
添加一个数据到列表最后一位
语法:列表名.append('内容')
添加一个数据到指定位置
语法:列表名.insert(下标位置,内容)
添加一个序列类型到最后一位,并被拆分
语法:列表名.extend(序列类型)
li = [1, 2, 3, 4, 5]
li.append(6)
print(li) # [1, 2, 3, 4, 5, 6]
li.insert(0, '一花')
print(li) # ['一花', 1, 2, 3, 4, 5, 6]
li.extend('二乃')
print(li) # ['一花', 1, 2, 3, 4, 5, 6, '二', '乃']
li.extend(['三玖'])
print(li) # ['一花', 1, 2, 3, 4, 5, 6, '二', '乃', '三玖']
默认从最后一个位置删除一个值,也可以指定位置
语法:列表名.pop()/pop(下标)
删除一个指定的值,如果有多个就从第一个开始删
语法:列表名.remove(删除对象)
清空列表里面的所有数据
语法:列表名.clear()
全局删除,可以删除一个变量
语法:列表名/列表名[下标]
li = [1, 2, 3, 4, 5, 6]
li.pop(-2)
print(li) # [1, 2, 3, 4, 6]
li.pop()
print(li) # [1, 2, 3, 4]
li.remove(1)
print(li) # [2, 3, 4]
del li[1]
print(li) # [2, 4]
li.clear()
print(li) # []
单个修改
直接通过下标进行修改
语法:列表名[下标]=内容
多个修改
通过切片方式进行修改(左闭右开区间)
语法:列表名[起点:终点]=数据1,数据2...
li = [1, 2, 3, 4, 5]
li[1] = 222
print(li) # [1, 222, 3, 4, 5]
li[0:2] = 123, 456
print(li) # [123, 456, 3, 4, 5]
根据内容获取指定数据的下标
语法:列表名:index(要找的内容) 列表名 :index(要找的内容,起点值)
统计数据出现的次数
语法:列表名.count(要找的内容)
li = [1, 2, 4, 3, 2, 4, 4]
print(li.index(2)) # 1
print(li.index(2, 3)) # 4
print(li.count(4)) # 3
全int的列表才可以排序
sort是在原列表上修改
让列表的内容按照顺序排列
语法:
列表名.sort()-->升序
列表名.sort(reverse=True)-->降序
li = [5, 2, 66, 34, 58]
li.sort()
print(li) # [2, 5, 34, 58, 66]
li.sort(reverse=True)
print(li) # [66, 58, 34, 5, 2]
sorted是返回一个新的列表
用变量赋值
print(list(range(1, 11)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
普通的for循环创建列表
li = []
for i in range(1, 11):
li.append(i)
print(li)# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
列表生成式生成
print([i for i in range(1, 11)])
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
元组通常是使用小括号将所有元素包围起来的,或者将各元素用逗号隔开也可以,python会视它为元组
# 如:t = 'hello','world'
t = (123, 456, 'hello', 123)
print(t.count(123)) # 2
print(t.count(789)) # 0 (不会报错)
t = (123, 456, 'hello', 123)
print(t.index(123)) # 0
print(t.index(123, 2)) # 3
相加
data = ('一花', '二乃')+('三玖', '四叶')
print(data) # ('一花', '二乃', '三玖', '四叶')
相乘
data = ('一花', '二乃')*2
print(data) # ('一花', '二乃', '一花', '二乃')
获取长度
data = ('一花', '二乃', '三玖', '四叶')
print(len(data)) # 4
索引
data = ('一花', '二乃', '三玖', '四叶')
print(data[2]) # 三玖
切片
data = ('一花', '二乃', '三玖', '四叶')
print(data[1:3]) # ('二乃', '三玖')
步长
data = ('一花', '二乃', '三玖', '四叶')
print(data[::2]) # ('一花', '三玖')
for循环
data = ('一花', '二乃', '三玖', '四叶', '五月')
for i in data:
if i == '四叶':
continue
print(i)
# 一花
# 二乃
# 三玖
# 五月
元组本身不可变,但元组中的可变元素可以改变(如列表)
t = (99, 88, ['一花', '三玖'], 55)
t[2][0] = '二乃'# 对元组中下标为2的这个列表中下标为0的数据进行更改
print(t) # (99, 88, ['二乃', '三玖'], 55)
%方法
常用占位符
%s --> 只能放字符串
%d --> 只能放整数,若有小数点,会被切掉
%f --> 只能放小数,默认保留6位
%.1f --> 保留1位小数
%.2f --> 保留2位小数
语法:("xxx%dxx%s"%(变量1,变量2))
name = 'XX'
age = 20
print('你好,我叫%s,今年%d岁了' % (name, age))
# 你好,我叫XX,今年20岁了
format()
语法:("xxx{}xx{}".format(变量1,变量2))
name = 'XX'
age = 20
print('你好,我叫{},今年{}岁了'.format(name, age))
# 你好,我叫XX,今年20岁了
print('你好,我叫{},今年{}岁了'.format('XX', 20))
# 你好,我叫XX,今年20岁了
自定义数据:
print('你好,我叫{1},今年{0}岁了'.format(20, 'XX'))
# 你好,我叫XX,今年20岁了
f-format()
name = 'XX'
age = 20
print(f'你好,我叫{name},今年{age}岁了')
# 你好,我叫XX,今年20岁了
print(f'你好,我叫{name[0]},今年{age-1}岁了')
# 你好,我叫X,今年19岁了
用来保存一些典型的对应关系的数据类型,特点就是用键值对的方式来存储数据
键值对:键:key 值:value
语法:key:value --> (键:值)
re = {'一花': '21', '二乃': '20', '三玖': '18'}
print(re['一花']) # 21
re = {'一花': '21', '二乃': '20', '三玖': '18'}
re['二乃'] = 22
print(re['二乃']) # 22
通过key访问value
scores = {'语文': 88}
print(scores['语文']) # 88
通过key添加key-value对
scores = {'语文': 88}
scores['数学'] = 90
print(scores) # {'语文': 88, '数学': 90}
通过key删除key=value对
scores = {'语文': 88, '数学': 90}
del scores['语文']
print(scores) # {'数学': 90}
通过key修改key-value对
fruits = {'bananas': 2.3, 'apples': 1.9}
fruits['apples'] = 2.1
print(fruits) # {'bananas': 2.3, 'apples': 2.1}
通过key判断指定key-value是否存在
fruits = {'bananas': 2.3, 'apples': 1.9}
print('bananas' not in fruits) # False
print('apples' in fruits) # True
clear()
fruits = {'bananas': 2.3, 'apples': 1.9}
fruits.clear()
print(fruits) # {}
get()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
print(books.get('红楼梦')) # 12
print(books.get('活着')) # None
print(books['三体']) # 报错
update()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108}
books.update({'西游记': 4, '三国演义': 3})
print(books) # {'西游记': 4, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
items()、keys()、values()
这三个方法分别会获取字典中所有的键值对、所有的key、所有的values。用list()函数将他们的返回值转换为列表。
items()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
item = books.items()
print(item) # dict_items([('西游记', 81), ('红楼梦', 12), ('水浒传', 108), ('三国演义', 3)])
print(list(item)) # [('西游记', 81), ('红楼梦', 12), ('水浒传', 108), ('三国演义', 3)]
print(list(item)[1]) # ('红楼梦', 12)
keys()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
key = books.keys()
print(list(key)) # ['西游记', '红楼梦', '水浒传', '三国演义']
values()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
value = books.values()
print(list(value)) # [81, 12, 108, 3]
setdefault()
books = {'西游记': 81, '红楼梦': 12, '水浒传': 108}
print(books.setdefault('三国演义', 3)) # 不存在,直接添加
print(books.setdefault('西游记', 4)) # 存在,不改变原值
print(books) # {'西游记': 81, '红楼梦': 12, '水浒传': 108, '三国演义': 3}
长度
info = {'name': 'XX', 'age': 20}
data = len(info)
print(data) # 2
索引(键)
info = {'name': 'XX', 'age': 20}
print(info['name']) # XX
print(info['height']) # 报错
for循环
info = {'name': 'XX', 'age': 20}
for k in info:
print(k) # 获取所有键
# name
# age
info = {'name': 'XX', 'age': 20}
for v in info.values():
print(v)
# XX
# 20
info = {'name': 'XX', 'age': 20}
for k, v in info.items():
print(k, v)
# name XX
# age 20
只能存储不可变的数据类型,是无序的
# 语法:集合名={数据1,数据2...}
注意:
'''
li = [] # 空列表
tu1 = () # 空元组
str1 = "" # 空字符串
dict1 = {} # 空字典
set1 = set() # 空集合
'''
去重
li = [1, 1, 2, 3, 3, 5, 5, 5]
li1 = set(li)
li2 = list(li1)
print(li1) # {1, 2, 3, 5}
print(li2) # [1, 2, 3, 5]
数学运算
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 & set2) # {3}
print(set1 | set2) # {1, 2, 3, 4, 5}
print(set1 - set2) # {1, 2}
print(3 in set2) # True
集合的作用:
add()
随机添加一个元素
s = {'五月'}
s.add('四叶')
print(s) # {'四叶', '五月'}
s.add('三玖')
print(s) # {'四叶', '三玖', '五月'}
pop()
随机删除一个元素
s = {'四叶', '三玖', '五月'}
s.pop()
print(s) # {'四叶', '三玖'}
s.pop()
print(s) # {'三玖'}
remove()
# 有参数,为要删除的元素。若元素不存在,报错
s = {'四叶', '三玖', '五月'}
s.remove('四叶')
print(s) # {'五月', '三玖'}
s.remove('二乃')
print(s) # 报错
discard()
# 与remove一样,不过元素不存在不会报错
s = {'四叶', '三玖', '五月'}
s.discard('二乃')
print(s) # {'三玖', '五月', '四叶'}
clear()
s.clear()
print(s) # set()
del
del s # 整个删除变量
print(s) # 报错(s不存在了)
公共功能:
数值类型 int、float、bool --> 存储一个数值
序列类型 str、list、tuple --> 存储多个数值
散列类型的特性:无序,内部元素不重复(无下标)
可变类型:列表,字典,集合
不可变类型:数字,字符串,元组