目录python
1、变量json
1.概述api
Variables are used to store information to be referenced(引用)and manipulated(操做) in a computer program.数组
2.声明网络
(1)命名规则app
(2)定义函数
name1 = 'Lu' name2 = name1 name1 = 'MJJ' print(name1, name2) -->: MJJ Lu
(3)删除测试
name1 = 'Lu' del name1 print(name1) -->: NameError: name 'name1' is not defined
变量的生命周期:无指向时,才会在内存中被回收。编码
2、数据类型url
1.数字
(1)分类
Python 支持三种不一样的数值类型:
(2)类型转换
(3)运算
不一样类型的数混合运算时会将整数转换为浮点数。
7 // 2=3, 7.0 // 2=3.0,7 // 2.0=3.0
在交互模式中,最后被输出的表达式结果被赋值给变量 "_"。“_”应该为只读变量。
(4)数学函数
(5)随机数函数
2.字符串
(1)切片,索引,拼接
str[a:b],str[a:b:c]
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次建立字符串时候须要在内存中开辟一块连续的空,而且一旦须要修改字符串的话,就须要再次开辟空间,万恶的+号每出现一次就会在内从中从新开辟一块空间。
字符串是一种不可变数据类型,不能够改变。能够用截取的方式,拼接的方式从新组合成新的字符串。
str1[0] = "H"
TypeError: 'str' object does not support item assignment.
(2)转义
a = "ajkfhajkfhkjahfkahfkhakfhkdafafafaddafafdafafadfafafafafafadefgg" \
"hfakjfhkah"
print(str1 + "\\")print("\'" + str1 + "\'")
(3)运算
print(r"hello \' word!")
print("hello \' word!")
(4)格式化输出
%和format()函数使用、f-string字面量格式化字符串,是新的格式化字符串的语法。
(5)字符串操做
参数:width,宽度;fillchar,能且只能为一个字符。
注意:
a、若是 width 小于字符串宽度直接返回字符串,不会截断;
b、fillchar 只能是单个字符。
str1 ='python' * 3 print(str1.count('p')) print(str1.count('p', 1)) # 包含起始位置 print(str1.count('p', 1, -6)) # 不包含结束位置 -->: 3 2 1
参数:seq,元组、列表、字典、字符串。字典只能链接键值key。
str1 = '\t' str2 = 'python' list1 = [i*2 for i in str2] print(str1.join(str2)) print(str1.join(list1)) -->: p y t h o n pp yy tt hh oo nn
参数:str,分隔符,默认为全部的空字符,包括空格、换行(\n)、制表符(\t)等;num,分割次数。默认为 -1, 即分隔全部,分割为 num+1 个子字符串。
返回值:元素为字符串的列表。
爬虫时,图片名获取:
url_str = "http://www.baidu.com/python/image/123456.jpg" print(url_str.split('/')[-1]) -->: 123456.jpg
注意:
a、该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
b、若是不带参数,默认是清除两边的空白符,例如:/n, /r, /t, ' '等
str1 = '\tpython\t' * 3 print(str1.strip()) -->: python python python
c、带有参数的时候,这个参数能够理解一个要删除的字符的列表,删除多个字符时,只要头尾有对应其中的某个字符即 删除,不考虑顺序,直到遇到第一个不包含在其中的字符为止。
str1 = 'a111123\t132231b213321312==3213122132*31123132' print(str1.strip('123ab\t')) # 等价于 for i in str1: if i in '123ab\t': str1 = str1.strip(i) -->: ==3213122132*
3.列表
(1)基况
列表元素类型能够不一致,和C数组不同(相似ndarray)。列表元素能够修改,因此作列表有关操做时,要注意原列表的元素是否被更改了(深浅拷贝!!!)。
list1 = [i for i in range(10)] list2 = list1 # list2 = list1.copy() print(list1, list2) list2[0] = 100 print(list1, list2) -->: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [100, 1, 2, 3, 4, 5, 6, 7, 8, 9] [100, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(2)基操
(3)列表嵌套
不支持花切,只能分层操做。
list1 = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] print(list1[1:][:]) print(list1[[0], [0]]) -->: TypeError: list indices must be integers or slices, not tuple [[4, 5, 6], [7, 8, 9]]
(4)常见内建函数和列表方法
内建函数:
元素所有为数字类型时,直接根据值的大小比较。当其中的元素所有为字符串类型(string)时,则比较的是每一个字符串元素的第一个字符的 ASCII 的大小。
str1 = "python" tup1 = ('1', '2', '3') dict1 = {'a': 1, 'b': 2, 'c': 3} print(list(str1)) # 每一个字符循环一遍,相似列表生成式 print(list(tup1)) print(list(dict1)) # 默认为KEY print(list(dict1.values())) -->: ['p', 'y', 't', 'h', 'o', 'n'] ['1', '2', '3'] ['a', 'b', 'c'] [1, 2, 3]
list1 = [i for i in range(10)] for index, value in enumerate(list1): print(index, value) -->: 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
list对象的方法:
list1 = [i for i in range(10)] list2 = list1.append(10) print(list2, type(list2), list1) -->: None <class 'NoneType'> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
参数:
seq-- 能够是列表、元组、集合、字典,若为字典,则仅会将键(key)做为元素依次添加至原列表的末尾。
参数:
x-- 查找的对象。
start-- 可选,查找的起始位置。
end-- 可选,查找的结束位置。
删除重复元素,不要用由前到后for循环。由于删除一个后,后面的元素回向前补齐,而循环下标仍是会正常加1,会致使后面的循环下标与元素不对应。
方法一:从后往前[::-1]循环开始删除。
方法二:用Python原生态方法,现用set()列表变成集合(集合惟一性),再用list()将集合变成列表。
list1 = [1, 2, 'a', 'l', 'a', 1, 1, 2, 3] set1 = set(list1) list1 = list(set1) print(list1) -->: [1, 2, 3, 'l', 'a']
4.元组
(1)基况
与列表相似,但元素不能修改,又叫只读列表。和str同样,操做都会生成新的元组。
(2)基操
(3)常见内建函数及方法
函数:
方法:(只有两个,由于元组不可变)
(4)元组注意事项
a、元组中只包含一个元素时,须要在元素后面添加逗号,不然括号会被看成运算符使用:
Tuple1 =(3)--》<class 'int'>Tuple = (3,)--》<class 'tuple'>
b、tuple的元素值是不容许删除的,但咱们可使用del语句来删除整个元组。
c、tuple中的“不变”,指的是“指向不变”,可是指向里面的内容是能够变的。
tuple1 = ([1, 2, 3, 9, 5], [1, 1, 2, 3], 100) tuple1[0][0] = 100 print(tuple1) -->: ([100, 2, 3, 9, 5], [1, 1, 2, 3], 100)
5.字典
(1)基况
字典是另外一种可变容器模型,且可存储任意类型对象。key-value键值对形式。
(2)键和值
(3)常见内建函数和方法
函数:
方法:
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = dict1.copy() # 深拷贝父对象(一级目录),子对象(二级目录)不拷贝,仍是引用 dict2['name'][0] = 'LU__' # 子对象为引用 dict2['age'] = [100, 16] # 父对象为拷贝 print(dict2) print(dict1) -->: {'name': ['LU__', 'mjj'], 'age': [100, 16], 'sex': ['man', 'wom']} {'name': ['LU__', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
深拷贝须要用到copy模块的deepcopy()函数,copy.deepcopy(dict)
参数:
seq,序列中的元素为字典的键值
value,默认为None。
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = dict1.fromkeys('NAME') dict3 = dict.fromkeys([1, 2, 3], [10, 10]) print(dict2) print(dict3) print(dict1) -->: {'N': None, 'A': None, 'M': None, 'E': None} {1: [10, 10], 2: [10, 10], 3: [10, 10]} {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']}
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict1_item = dict1.items() print(dict1_item) print(type(dict1_item)) print(list(dict1_item)) print(list(dict1)) # 只获得键值列表 for i, j in dict1_item: print(i, j) -->: dict_items([('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])]) <class 'dict_items'> [('name', ['lu', 'mjj']), ('age', [18, 16]), ('sex', ['man', 'wom'])] ['name', 'age', 'sex'] name ['lu', 'mjj'] age [18, 16] sex ['man', 'wom']
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} for i in dict1.keys(): print(i)
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} print(dict1.setdefault('name')) print(dict1.setdefault('birthday', ['1995-8-6', '1995-3-9'])) print(dict1) -->: ['lu', 'mjj'] ['1995-8-6', '1995-3-9'] {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
dict1 = {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom']} dict2 = {'birthday': ['1995-8-6', '1995-3-9']} print(dict1.update(dict2)) print(dict1) -->: None {'name': ['lu', 'mjj'], 'age': [18, 16], 'sex': ['man', 'wom'], 'birthday': ['1995-8-6', '1995-3-9']}
6.集合
集合(set)是一个无序的不重复元素序列。两个重要做用:
去重:把列表变成集合便可
关系测试:测试两组数据以前的交集、差集、并集等
8.byte
字节流。有些时候(网络通讯)参数传递必须以字节流形式传参。
9.json