title: Python语法基础入门
date: 2020-09-30 17:44:18
tags:
- Python
- 基础语法
一、基础
1. Python3 基础数据类型:
1.1 标准数据类型:
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- **不可变数据(3 个):**Number(数字)、String(字符串)、Tuple(元组);
- **可变数据(3 个):**List(列表)、Dictionary(字典)、Set(集合)。
1.2 Number(数字):
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
可以使用type() 、isinstance() 函数来查询变量所指的对象类型,不同的是type() 不会认为子类是一种父类类型,而 isinstance() 会认为子类是一种父类类型。
!注意:
- 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
- 2、一个变量可以通过赋值指向不同类型的对象。
- 3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
- 4、在混合计算时,Python会把整型转换成为浮点数。
1.3 String(字符串):
Python中的字符串用单引号 ’ 或双引号 " 括起来,同时使用反斜杠 ** 转义特殊字符。
- 字符串的截取的语法格式: 变量[头下标:尾下标]
- Python 使用反斜杠 \转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>>
- Python字符串格式化输出
方式(1):在Python中,采用的格式化方式和C语言是一致的,用 %实现,举例如下:
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
方式(2):format()
方式(3):f-string
- Python中的字符串处理函数:
find():检测字符串是否包含特定字符,如果包含,则返回开始的索引;否则,返回-1。
## find()函数 str = 'hello world' # 'wo'在字符串中 print( str.find('wo') ) # 'wc'不在字符串中 print( str.find('wc') ) ## 输出: ## 6 ## -1
index():检测字符串是否包含指定字符,如果包含,则返回开始的索引值;否则,提示错误。
## index()函数 str = 'hello world' # 'wo'在字符串中 print( str.index('wo') ) # 'wc'不在字符串中,程序报错ValueError,终止运行 print( str.index('wc') ) ## 输出: ## 6 ## ValueError: substring not found
count():返回str1在string中指定索引范围内[start, end)出现的次数。
str = 'hello world' # 统计str中全部字母l的个数 print( str.count('l') ) # 统计str中从第5+1个字母到最后一个字母中,字母l的个数 print( str.count('l', 5, len(str)) )
replace():str.replace(str1,str2, count) ----- 将str中的str1替换成str2,如果指定count,则不超过count次。
str = 'hello world hello world' str1 = 'world' str2 = 'waltsmith' # 将所有的str1替换为str2 print( str.replace(str1, str2) ) # 只将前1个str1替换为str2 print( str.replace(str1, str2, 1) ) ## 输出: ## hello waltsmith hello waltsmith ## hello waltsmith hello world
split():str.split(‘分界符’, maxSplit)
print(str3.split(' ', 3)) # 以字母o作为分界符,指定最大分割为2,将返回最大分割+1个元素的列表
capitalize():将字符串的首字母大写,其余字母全部小写
str.capitalize()
title():将字符串中的所有单词的首字母大写,其余字母全部小写;值得注意的是,这里单词的区分是以任何标点符号区分的
str.title()
startswith():检查字符串str是否 以字符串str1开头,若是,则返回True;否则,返回False;
str.startswith(str1)
lower():将字符串的所有字母转换为小写;
str.lower()
upper():将字符串的所有字母转换为大写;
str.upper()
endswith():检查字符串str是否 以字符串str1结尾,若是,则返回True;否则,返回False;
str.endswith(str1)
ljust():将字符串左对齐,并使用空格填充至指定长度len;
str.ljust(len) 同理右对齐 :str.rjust(len) 居中对齐:str.center()
lstrip():去掉字符串左边的空白字符
str.lstrip() 同理去除右边的:str.rstrip() 去除两边的:str.strip()
partition():根据str中的第一个str1,将字符串str分割为str1之前,str1和str1之后三个部分;若str1不存在,则将str作为第一部分,后面两个元素为空;返回元组;
str.partition(str1) str14 = "Are you believe in yourself?" # "yourself"在字符串中 print(str14.partition("yourself")) # "you"在字符串中有两个 print(str14.partition("you")) # "walt"不在字符串中 print(str14.partition("walt")) ## 输出: ## ('Are you believe in ', 'yourself', '?') ## ('Are ', 'you', ' believe in yourself?') ## ('Are you believe in yourself?', '', '')
join():将iterable中每两个相邻元素中间插入字符串str,返回形成的新的字符串;
str.join(iterable) str15 = "walt" print(str15.join("ABC")) iterable = ['YOU', 'THEY', 'WE'] print(str15.join(iterable)) ## 输出: ## AwaltBwaltC ## YOUwaltTHEYwaltWE
isspace():如果字符串str中只包含空格,则返回True;否则,返回False;
isdigit():如果字符串str中只包含数字,则返回True;否则,返回False;
isalpha():如果字符串str中只包含字母,则返回True;否则,返回False;
- 字符编码:
!注意:
- 1、反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 2、字符串可以用+运算符连接在一起,用*运算符重复。
- 3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- 4、Python中的字符串不能改变。
1.4 List(列表):
列表和字符串一样都能进行截取和索引,不同的是列表中的元素是可以改变的
- 列表的截取:
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 输出完整列表
print (list[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list + tinylist) # 连接列表
结果:
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
# !注意:Python列表可以截取接收第三个参数,参数作用是截取的步长,如果第三个为负数,表示逆向截取
inputWords=input()
inputWords=inputWords[-1::-1]
print(inputWords)
- 改变列表中的元素:
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
- 常用函数:
(1). 用len()函数获取list集合的元素个数: len(classmates)
(2). 将元素添加到List尾部: classmates.append('asdfa')
删除list末尾的元素: classmates.pop()
(3). 把元素插入到指定的位置: classmates.insert(1,'jack')
删除指定位置的元素:classmates.pop(i) ------i是索引的位置
删除具体的元素值:classmates.remove(value) -----value是具体的元素值
(4). 把某个元素换成别的元素,直接赋值给对应的索引位置: classmates[1] = 'ssfa'
1.5 Tuple(元组):
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
tinytuple = (123, 'runoob')
print (tuple) # 输出完整元组
print (tuple[0]) # 输出元组的第一个元素
print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
print (tuple[2:]) # 输出从第三个元素开始的所有元素
print (tinytuple * 2) # 输出两次元组
print (tuple + tinytuple) # 连接元组
# 结果:
('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')
!注意:
- 1、与字符串一样,元组的元素不能修改。
- 2、元组也可以被索引和切片,方法一样。
- 3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
- 4、元组也可以使用+操作符进行拼接。
1.6 Set(集合):
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
- 创建格式:
parame = {value01,value02,.....}
# 或者
set(value) -----这个value可以是list集合:
例如:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
- set进行集合运算:
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
- 常用方法:
(1):add(key)方法添加元素到set中---- s.add(4)
1.7 Dictionary(字典):
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
dict.pop('one') # 删除dict中对应键的值
'''
输出结果
1 - 菜鸟教程
2 - 菜鸟工具
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])
'''
- 构造方法-----空对象
dict= {}
- 运用dict() 构造函数
sss=dict([('runnob',1),('google',2)])
print(sss)
ddd=dict(key1=1,key2=2,key3=3)
print(ddd)
!注意:
- 1、字典是一种映射类型,它的元素是键值对。
- 2、字典的关键字必须为不可变类型,且不能重复。
- 3、创建空字典使用 { }。
2. Python3 运算符:
2.1 Python逻辑运算符:
2.2 Python成员运算符:
2.3 Python身份运算符:
2.4 数学函数:
2.5 随机数:
- choice(seq)
此处的 seq 必须是有序的序列,返回序列中的一个随机项。
from random import *
c1 = choice([1, 2, 3, 4, 5])
c2 = choice((1, 2, 3, 4, 5))
c3 = choice(range(1, 11))
print(c1, c2, c3)
- randint(start,end)
返回 [start, end] 之间的一个随机整数。包头又包尾。
from random import *
r = randint(1, 5)
print(r)
- random()
返回一个 [0, 1) 的随机浮点数。
from random import *
print(random())
print(round(random(), 3))
- uniform(a,b)
返回 [a, b] 之间的一个随机浮点数。
注:a和b接受的数据大小随意。例如:random.uniform(10,20) 和 random.uniform(20,10)
from random import *
print(uniform(10, 20))
print(uniform(20, 10))
print(uniform(30, 30))
- randrange(start,end,step)
从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为
print(randrange(0, 10, 2))
- sample(seq,number)
从 seq 中随机取出 number 个元素,以列表的形式返回。此处 seq 可以是有序,也可以是无序。
print(sample({1, 2, 3, 4, 5}, 3))
print(sample('abcdefg', 3)) # ['f', 'c', 'd']
- shuffle(lt)
将 lt (列表对象) 中的元素打乱。
lt = ['a', 'b', 'c', 'd', 'e', 'f']
shuffle(lt) # 类似洗牌
print(lt)
2.6 三角函数:
3. Python数据格式与JSON数据格式的互相转化:
3.1 JSON数据格式介绍:
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在中括号中)
对象(在大括号中)
null
JSON 使用 JavaScript 语法
因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。
通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:
实例:
var sites = [
{ “name”:“百度” , “url”:“www.baidu.com” },
{ “name”:“淘宝” , “url”:“www.taobao.com” },
];
可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):
sites[0].name;
返回的内容是:
百度
可以像这样修改数据:
sites[0].name=“baidu”;
JSON 文件
JSON 文件的文件类型是 “.json”
JSON 文本的 MIME 类型是 “application/json”
3.2 JSON编码与解码:
Python3 JSON 数据解析:
json.dumps(python_value,ensure_ascii=False): 对数据进行编码,将python数据格式转化为JSON 格式,不使用ascii码格式。
json.loads(): 对数据进行解码,将JSON数据格式转化为python格式。
实例:
import json
data = [ { ‘a’ : 4, ‘b’ : 5, ‘c’ : 6, ‘d’ : 7, ‘e’ : 8 } ]
json = json.dumps(data)
print json
以上代码执行结果为:
[{“a”: 4, “c”: 5, “b”: 6, “e”: 7, “d”: 8}]
以下实例展示了Python 如何解码 JSON 对象:
import json
jsonData = ‘{“a”:4,“b”:5,“c”:6,“d”:7,“e”:8}’;
text = json.loads(jsonData)
print text
以上代码执行结果为:
中的第一项(索引从 0 开始):
sites[0].name;
返回的内容是:
百度
可以像这样修改数据:
sites[0].name=“baidu”;
JSON 文件
JSON 文件的文件类型是 “.json”
JSON 文本的 MIME 类型是 “application/json”
3.2 JSON编码与解码:
Python3 JSON 数据解析:
json.dumps(python_value,ensure_ascii=False): 对数据进行编码,将python数据格式转化为JSON 格式,不使用ascii码格式。
json.loads(): 对数据进行解码,将JSON数据格式转化为python格式。
实例:
import json
data = [ { ‘a’ : 4, ‘b’ : 5, ‘c’ : 6, ‘d’ : 7, ‘e’ : 8 } ]
json = json.dumps(data)
print json
以上代码执行结果为:
[{“a”: 4, “c”: 5, “b”: 6, “e”: 7, “d”: 8}]
以下实例展示了Python 如何解码 JSON 对象:
import json
jsonData = ‘{“a”:4,“b”:5,“c”:6,“d”:7,“e”:8}’;
text = json.loads(jsonData)
print text
以上代码执行结果为:
{u’a’: 4, u’c’: 5, u’b’: 6, u’e’: 7, u’d’: 8}