Code Monkey home page Code Monkey logo

python_learning's Introduction

1. Python语法元素分析

1.1 程序的格式框架

  • Python采用严格的缩进来表名程序的格式框架,代码编写中,缩进可以用TAb键实现,也可以用多个空格(一般来说是四个空格)实现。

1.2 注释

  • 注释是程序员在代码中加入一行或者多行信息,用来对语句、函数、数据结构或方法等进行说明,提升代码的可读性。注释是辅助性文字,会被编译器忽略,不被计算及执行。

  • Python语言有两种注释方法:单行注释和多行注释。单行注释以 # 开头,多行注释以 '''(3个单引号)开头和结尾。

  • 注释主要有3个用途。第一,标明作者和版权信息。第二,解释代码原理或者用途。第三,辅助程序调试。

1.3 命名与保留字

  • Python语言允许采用大写字母、小写字母、数字、下划线_和汉字等字符及其组合给变量命名,但名字的首字符不能是数字,中间不能出现空格,长度没有限制。注意:标识符对大小写敏感。

  • 保留字:也成为关键字,指被编程语言内部定义并保留使用放入标识符。在书写时不能定义与关键字相同的标识符。以下是Python的33个关键字列表:
                                      表1

False def if raise None del import return True elif in
try and else is while as except lambda with assert finally
nonlocal yield break for not class from or continue global pass

1.4 字符串

  • Python语言中,字符串是用两个双引号 " " 或者单引号 ' ' 括起来的零个或多个字符。

  • 字符串是字符的序列,可以按照单个字符或者字符片段进行索引。字符串包括两种序号体系:正向递增序号和反向递减序号。如果字符串长度为L,正向递增以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。这两种索引字符的方法可以同时使用。

  • Python字符串也提供区间访问方式,采用[N:M]格式,表示字符串中从N到M(不包含M)的子字符串,其中,N和M为字符串的索引符号,可以混合使用正向递增序号和反向递减序号。

1.5 赋值语句

  • Python语言中,“=”表示“赋值”,即将等号右侧的计算结果赋给左边变量,包含等号(=)的语句称为赋值语句。此外,还有一种同步赋值语句,可以同时给多个变量赋值,基本格式如下:
    <变量1>,<变量2>...<变量N> = <表达式1>,<表达式2>...<表达式N>

1.6 input函数

  • input函数从控制台获得用户输入,无论用户在控制台输入深内容,input()函数都以字符串类型返回结果。

1.7 分支语句

  • 分支语句是控制程序运行的一类重要语句,它的作用是根据判断条件选择程序执行路径,使用方式如下:
  if <条件1>:  
      <语句块1>
  elif <条件2>:
      <语句块2>
  ......
  else:
      <语句块3>

1.8 eval()函数

  • eval(字符串)函数是Python语言中一个十分重要的函数,它能够以Python表达式的方式解析并执行字符串,并将返回结果输出。简单说,eval(字符串)的作用是将输入的字符串转变成Python语句,并执行该语句。

1.9 循环语句

  • 循环语句是控制程序运行的一类重要语句,与分支语句控制程序类似,它的作用是根据条件确定一段程序是否再次执行一次或者多次。

1.10 函数

  • 函数可以理解为对一组表达特定功能表达式的封装,它与数学函数类似,能够接受变量并输出结果。input()、print()、eval()都是python解释器的内置函数。

1.11 import相关

使用import引用函数有两种方式,但对函数的使用方式略有不同。

  • 第一种引用函数库的方法如下:

import 库名
此时,程序可以调用库名中的所有函数,使用库中函数的格式如下:
<库名>.<函数名>(函数参数)

  • 第二种引用函数库的方法如下:

from <库名> import <函数名,函数名...函数名>
from <库名> import *
其中,*是通配符,表示所有函数,此时,调用该库的函数时不再需要使用库名,直接使用如下格式:
<函数名><函数参数>

                                    表2

函数名称 函数说明
abs(x) x的绝对值。如果X是复数,返回负数的模
all(x) 组合类型变量x中所有元素都为真时返回True,否则返回else;若x为空,返回True
any(x) 组合类型变量x中任一元素都为真时返回True,否则返回else;若x为空,返回False
bin(x) 将整数x转换为等值的二进制字符串,如bin(1010)的结果是'0b1111110010'
bool(x) 将x转换为Boolean类型,即True或False。如bool('')的结果是False
chr(i) 返回Unicode为i的字符。如chr(9966)的结果是'✌'。
complex(i,j) 创建一个复数r+i*1j,其中i可以省略。如complex(10,10)的结果是10+10j
dict() 创建字典类型。如dict()的结果是一个空字典
divmod(a,b) 返回a和b的商及余数
eval(s) 计算字符串s作为Python表达式的值,如eval("1+99")的结果是100
exec() 计算字符串s作为Python语句的值。如exec('a=1+999')运行后,变量a的值为1000
float(x) 将X转换成浮点数。如float(1010)的结果是1010.0
hex(x) 将整数转换为16进制字符串。如hex(1010)的结果是'0x3f2'
input(x) 获取用户输入,其中s是字符串,作为提示信息。s可选
int(x) 将x转换成整数。如int(9.9)的结果是9
len(x) 计算变量x的长度。如len(range(10))的结果是10
list(x) 创建或将变量x转换成一个列表类型。如list({10,9,8})的结果是[8,9,10]
max(a1,a2,...) 返回参数的最大值。如max(1,2,3,4,5)的结果是5
min(a1,a2,...) 返回参数的最小值。如min(1,2,3,4,5)的结果是1
oct(x) 将整数x转换为8进制字符串。如oct(1010)的结果是'0o1762'
open(fname,m) 打开文件,包括文本方式和二进制方式等。其中,m部分可以省略,默认是以文本可读形式打开
ord(c) 返回一个字符的Unicode编码值。如ord("字")的结果是23383
pow(x,y[,z]) 返回x的y次幂。如果z存在,则再对进行取模。如pow(2,pow(2,2))的结果是16
print(x) 打印变量或字符串x。print()的end参数用来表示输出的结尾字符
range(a,b,s) 从a到b(不含)以s为步长产生一个序列。如list(range(1,10,3))的结果是[1,4,7]
reversed(r) 返回组合类型r的逆序迭达形式。如for i in reversed([1,2,3])将逆序遍历列表
round(n) 四舍五入方式计算n。如 round(10.6)的结果是11
set(x) 将组合数据类型x 转换成集合类型。如set([1,1,1,1])的结果是{1}
sorted(x) 对组合数据类型x进行排序,默认从小到大 。如sorted([1,3,5,2,4])的结果是[1,2,3,4,5]
str(x) 将x转换成等值的字符串类型。如str(0x1010)的结果是'4112'
sum(x) 对组合数据类型x计算求和结果。如 sum([1,2,3,4,5])的结果是15
type(x) 返回变量x的数据类型。如type({1:2})的结果是<class 'dict'>
tuple() 将可迭达对象转换成 元组
next() 返回迭达器的下一个元素
enumerate() 将可遍历的数据对象组合成一带有数据和数据下标的索引序列
filter() 通过指定条件过滤序列并返回符合要求的过滤值
iter() 根据指定的可迭达集合对象或可调用对象来生成一个迭代器
map () 通过自定义函数实现对序列的元素映射操作并返回操作后的结果
zip() 将可迭达的对象打包成元组并返回由元组组成的对象
format() 格式化数据
slice() 通过指定的切片位置和间隔构造一个切片对象

3.组合数据类型

组合数据类型为多个同类型或者不同类型数据提供单一表示。组合数据类型分为3类:序列类型、集合类型和映射类型。

3.1.1 序列类型

序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。Python语言中有很多数据类型都是序列类型,其中比较重要的是str(字符串)、tuple(元组)和list(列表)。序列类型有12个通用的操作符和函数,如表所示:

                                表3

操作符 描述
x in s 如果x是s是元素,返回Ture,否则返回False
x not in s 如果x不是s是元素,返回Ture,否则返回False
s + t 连接s和t
s * n 或 n * s 将序列s复制n次
s[i] 索引,返回序列的第i个元素
s[i:j] 分片,返回包含序列s第i到第j个元素的子序列(不包含第j个元素)
s[i:j:k] 步骤分片,返回包含序列s第i到第j个元素以k为步数的子序列
len(s) 序列s的元素个数
min(s) 序列s中的最小元素
max(s) 序列s中的最大元素
s.index(x[,i[,j]]) 序列s中从i开始到j位置中第一次出现元素x的位置
s.count(x) 序列s中出现x的总次数

tips:元组是序列中比较特殊的类型,因为它一旦创建就不能被修改。生成元组只需要将元素隔离开即可,也可以增加圆括号,但圆括号在不混淆语义的情况下不是必须的。

example:


creature = 'cat','dog','tiger','human'

3.1.2 集合类型

集合类型与数学中的概念一致,即包含0个或多个数据项的无序组合。集合中的元素不可重复,元素类型只能是固定数据类型,例如整数、浮点数、字符串、元组等,列表、字典和集合数据类型本身都是可变数据类型,不能作为集合的元素出现。由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加和删除。集合用{}表示,可以用复制语句生成一个集合,例如:

s  = {425,"BIT",(10,"cs"),"424"}

集合类型有10个操作符,如表所示:

                                                表 4

操作符 描述
S - T或S.difference(T) 返回一个新集合,包括在集合S中 但不在集合T中的元素
S-=T或S.difference_updat(T) 更新集合S,包括在集合S但不集合T中的元素
S&T或S.intersection(T) 返回一个新集合,包括同时在集合S和T中的元素
S&=T或 S.intersection_update(T) 更新集合 S,包括同时在集合S和 T中元素
S^T或s.symmetricc_difference(T) 返回一个新集合 ,包括集合S和T中的元素,但不包括同时在其中的元素
S^=T或s.symmetricc_difference_update(T) 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素
S |T或S.union(T) 返回一个新集合,包括集合S和T 中的所有元素
S|=T或S.update(T) 更新集合S,包括集合S和T 中的所有元素
S<=T或S.issubset(T) 如果S与T相同或者S是T的 子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集
S>=T或S.issuperset(T) 如果S与T相同或者S是T的 超集,返回True,否则返回False,可以用S<T判断S是否是T的真子集

集合类型有10个操作函数或方法,如表所示:

                    表5

操作函数或方法 描述
S.add(x) 如果数据项x不在集合S中,将x增加到s
S.clear() 移除S中的所有数据项
S.copy() 返回集合S的一个副本
S.pop() 随机返回集合S中的一个元素,如果S异常,则产生KeyError异常
S.discrad(x) 如果x在集合S中,移除该元素;如果x不在集合S中,不报错
S.remove(x) 如果x在集合S中,移除该元素;不在则产生KeyError异常
S.isdisjoint(T) 如果集合S 与T 没有相同元素,返回True
len(S) 返回集合S的个数
x in S 如果x是S的元素,返回True,否则返回False
x not in S 如果x不是S的元素,返回True,否则返回False

集合类型主要用于3个场景:成员关系测试,元素去重和删除数据项。

3.1.3 映射类型

映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对是一种二元关系,源于属性和值得映射关系。键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。

3.2 列表类型操作

要点:列表是包含0个或多个对象引用的有序序列,没有长度限制,可自由增删元素,使用灵活。

3.2.1 列表类型的概念

列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。

列表用中括号([])表示,也可以通过list()函数将元组或字符串化成列表。直接使用list()返回一个空列表。

与整数和字符串不同,列表要处理一组数据,因此,列表必须显示的数据赋值才能生成,简单的将一个列表赋值给另一个列表不会生成新的列表对象。

3.2.2 列表类型的操作

列表是序列类型,因此,表3中12个序列类型的操作符和函数都可以应用于列表类型。表6给出了列表类额外的14个常用函数或方法:

                   表6

函数或方法 描述
ls[i]=x 替换列表ls第i数据项为x
ls[i:j]=lt 用列表lt替换列表ls中第i到第j项数据(不含第j项,下同)
ls[i:j:k]=lt 用列表lt替换列表ls中第i到第j项以k为步数的数据
del ls[i:j] 删除列表ls中第i到 第j 项数据,等价于ls[i:j]=[]
del ls[i:j:k] 删除列表ls中第i到第j项以k为步数的数据
ls+=lt或ls.extend(lt) 将列表lt元素增加到列表ls中
ls *=n 更新列表ls,其元素重复n 次
ls.append(x) 在列表ls最后增加一个元素x
ls.clear() 删除ls中的所有元素
ls.copy() 生成一个新列表,复制ls中的所有元素
ls.insert(i,x) 在列表ls的第i位置增加元素x
ls.pop(i) 将列表ls中的第i项元素取出并删除该元素
ls.remove(x) 将列表中出现的第一个元素x删除
ls.reverse() 列表ls中的元素反转

3.3 字典类型和操作

要点:字典是包含0个或者多个键值对的集合,没有长度限制,可以根据键索引值得内容。

3.3.1 字典类型的概念

Python语言中的字典可以通过大括号{}建立,建立模式如下:

{<键1>:<值1>,<键2>:<值2>,...,<键n>:<值n>}

其中,键和值通过冒号连接,不同键值对通过逗号隔开。简单说,可以把字典看成元素是键值对的集合。字典最主要的用法是查找与特定键相对应的值,这通过索引符号来实现。一般来说,字典中键值对的访问模式如下,采用中括号形式:

<值> = <字典变量>[<键>]

字典中对某个键值的修改可以通过中括号的访问和赋值实现。

3.3.2 字典类型的操作

  • 使用大括号可以创建字典,并制定初始值,通过中括号可以增加新的元素。例如:
>>>Dcountrys = {"**":"北京","美国":"华盛顿","法国":"巴黎"}
>>>Dcountrys['英国'] = '伦敦'
>>>print(Dcountrys)
{"**":"北京","美国":"华盛顿","法国":"巴黎",'英国':"伦敦"}

直接使用大括号可以创建一个空的字典,并通过中括号向其增加元素。

                   表7

函数和方法 描述
< d >.keys() 返回所有键信息
< d >.values() 返回所有的值信息
< d >.items() 返回所有的键值对
< d >.get(< key >,< default>) 键存在则返回相应的值,否则返回默认值
< d >.pop(< key>,< default > ) 键存在返回相应值,同时删除键值对,否则返回默认值
< d >.popitem() 随机从字典中取出一个键值对,以元组(key,value)形式返回
< d>.clear() 删除所有的键值对
del < d>[< key>] 删除字典中某一个键值对
< key> in d 如果键在字典中则返回True,否则返回False

上述方法的一些例子如下,如果希望keys()、values()和items()方法返回列表类型,可以用list()函数将返回值转换成列表


>>>Dcountrys = {"**":"北京","美国":"华盛顿","法国":"巴黎"}
>>>Dcountrys.keys()
dict_keys(['**', '美国', '法国'])
>>>list(Dcountrys.keys())
['**', '美国', '法国']
>>>list(Dcountrys.values())
['北京', '华盛顿', '巴黎']
>>> Dcountrys.items()
dict_items([('**', '北京'), ('美国', '华盛顿'), ('法国', '巴黎')])  
>>> '**' in Dcountrys
True

与其他组合类型一样,字典可以通过for-in语句对其元素进行遍历,基本语法结构如下:

for <变量名> in <字典名>:

 <语句块>

由于键值对中的键相当于索引,因此,for循返回的变量名是字典的索引值。字典是实现键值对映射的数据结构,它采用固定数据类型的键数据作为索引,十分灵活,请理解如下一些基本原则:

  • 字典是一个键值对的集合,该集合以键作为索引,一个键信息只对应一个值信息。
  • 字典中元素以键信息为索引访问。
  • 字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

——未完待续

python_learning's People

Contributors

gemini128663 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.