补充一个上面博客忘记补充的基础概念
后面遇上再逐个解析补充

python3中不可变数据类型:
bool, int, float, complex, str, tuple, frozenset, bytes
可变的数据类型:
list,dict,set,bytearray

序列sequence
何为序列?
在数学上,序列是排成一列的对象;
两个特性:1.线性排列 每个元素,不是在其他元素之前,就是在其他元素之后
2.序列具备顺序性,可通过下标精确访问

python常见基础序列有:字符串,列表,元组等

字符串
一串字符有序排列就是 字符串序列
字符串的常见序列操作
例如:

>>> info = "hello,world"

#索引
#从0开始,从左往右依次+1,-1可直接索引至最后
>>>print(info[0]) 
"h"
#从-1开始,从左往右依次-1
>>>print(info[-2])
"l"

#切片 第一个表示起始位置(该位置元素应该被包含)
>>>print(info[1:])
"ello,world"
# 最后一个结束位置(该位置元素不被包含,不写默认全部读取)
>>>print(info[1:-1])
"ello,worl"#注意没有"d"
# 步长 默认>>>print(info[1:-1]为1,正数从左往右切,负数从右往左切
>>>print(info[1:-1:2])
"el,ol"

'''
切片需要注意的地方:
1.左含又不含(切换结束位置应被舍弃)
2.乱切不报错(切片如果错误切片,比如info[-1:1:2])切片不会报错
'''

字符串的一些常用函数:
两加:join、replace
两索引:find、index
两个数:len、count
两大小写变化:upper、title
两长度变化:split、center、

字符串的查找

find————字符串独用

info = "hello,world"

print(info.find("e"))

1 #存在返回对应下标,不存在返回-1

index————有序容器都可以用

print(info.index("e"))
1 #存在返回对应下标,不存在就报错,
谨慎使用,多个返回第一个
后面可以跟两个参数

字符串长度判断
len————有序容器都可以用

print(len(info)))

11

搜集出现特定字符次数
count————字符串独有

print(info.count("1"))

0

split() 字符串切割

print(info.split(","))

['hello', 'world']#返回值是列表,不会影响原字符窜

upper() 将所有的字符转换为大写

print(info.upper())

HELLO,WORLD

title() 首字母转换为大写

print(info.title())

Hello,World#会自动识别对应符号

center() 返回一个原字符串居中,并以空格填充至长度宽度的新字符串

print(info.center(20,"*"))
hello,world*

其字符串两头被*填充,一共20个字符,不均匀时优先后面,不写默认空格填充

join() 在字符串后面插入一个指定字符,构造一个新的字符串

print("".join(info))

hello,worl*d #难得的填充物放在前面的函数

replace

isspace() 检测字符串中是否只包含空格,如果有返回Trun反之返回False,通俗的讲就是判断非空验证
isalnum() 检测是否只包含数字或字母。用处:可以用于判断密码,一般情况下密码不能输入汉字或空格。
isdigit() 检测字符是否只包含数字, 返回Trun 和 False
isalpha() 检测字符串是否只包含字母

日常字符串最常见的还是以下三个操作:
1.序列切片
2.字符切割
3.正则表达

涉及到字符串的转义和r字符串,b字符串等字符串的其他用法等到格式化输出的时候一起总结

列表

列表是可以存储任意类型的序列

因为相比于字符串和元组,列表是难得的可以修改的序列
所以,这里以列表为例子,讲一下
增删改查 合并排序

增:
append、insert
>>>list1=[1,2,3]
>>>list1.append(4)
>>>print(list1)
[1,2,3,4]
#尾部开始增加元素

>>>list1=[1,2,3]
>>>list1.insert(0,4)
>>>print(list1)
[4,1,2,3]
#第一个参数为下标序列,后一个参数为填入数值
#第一个参数大于最大序列,默认尾部,不会报错



删:
pop,del,clear,remove
list1 = [1,2,3,4,5]

list1.pop(2)

print(list1)

[1,2,4,5]

pop 直接弹出下标2的元素,pop弹出的时候可以看到

如果不注明的话,弹出的默认为最后的元素

list1 = [1,2,3,4,5]

del list1[2]

print(list1)

[1,2,4,5]

按下标直接删除某个元素

list1 = [1,2,3,4,5]

list1.remove(2)

print(list1)

[1,3,4,5]

按值删除某个元素

list1 = [1,2,3,4,5]

list1.clear()

print(list1)

[]

清空列表的值

list1= [1,2,3]

list1[2] = 4

print(list1)

[1,3,4]


1.查询方法
print(dir(list))

2.查询列表
index、count ,与上面字符串使用方法相同

合并
>>>list1=[1,2,3]
>>>list2=[4,5,6]
>>>list1.extend(list2)
>>>print(list1)
[1,2,3,4,5,6]

排序
列表的排序此处仅做最简单的sorted介绍,详情可见后面的笔记

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
#注意也可以使用a.sort(),此时list本身将被修改

列表的拷贝

1.赋值、
1.数字赋值
a=1
b=a
#id(a)和id(b)相同,映射的都是1的指针
a=2
print(b)   -------->b=1
#id(b)和id(a)不同,b映射数字常量1的内存指针,a映射数字常量2的内存指针
赋值的本义就是变量映射常量的指针

2.浅拷贝、深拷贝
>>>import copy
>>>a=[1,2,[3,4]]
>>>b=copy.copy(a)
#此时就是简单的浅拷贝,外层指针不同(可以查看id的方法验证)
#内层指针相同,例如:
>>>a[-1].append(5)
>>>print(a,b)
[1, 2, [3, 4, 5]] [1, 2, [3, 4, 5]]

所以,深拷贝就是完全拷贝内外层指针都不相同
c=copy.deepcopy(a)

元组

元组只能查询,因为元组是不可更改的
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
更多介绍在后面提及时再详谈
注意:元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,)