Python基础知识

来源:互联网 发布:淘宝宝贝详情页面尺寸 编辑:程序博客网 时间:2024/06/05 16:59

Python基础知识

Python简介

Python是一门脚本语言,不同于C/C++编译型语言,python是一门解释型语言,不要通过编译生成可执行文件,编写的.py后缀的python源文件便可以通过pyhton解释器就可以执行。Python作为脚本语言,虽然相比C/C++在执行效率方面不高,但是开发效率高,而且Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,任何一门语言都都可以从运行环境、基础语法知识和基础库着三个方面学习。

运行环境:

1:Python解释器

Python解释器就是Python的交互式运行环境,python程序必须有解释器才能够运行,是必备的环境。

python解释器下载地址:https://www.python.org/

版本:python2.7

安装后,一般安装程序给配置好了环境变量,windows下在cmd中输入python回车,如果出现python版本信息,进入命令行,说明配置好了;如果没有,则需要配置环境变量。安装了python解释器之后,便可以运行python程序,可以用命令交互式的,就像在cmd中输入dos命令,也可以直接运行.py结尾的python程序文件。

2:文本编辑器

有了运行环境,但是还得有编码环境,这个很多IDE都对python支持,我的话直接用的notepad文本编辑器。

Python基础

输入输出

输入输出是最基本的功能,用于用户和计算机进行交互,raw_input和print是在命令行下面最基本的输入和输出。

输出print

print后面跟上输出的内容,就可以向屏幕上输出指定的内容。

print语句也可以跟上多个输出内容,用逗号“,”隔开,就可以连成一串输出,print会依次打印每个字符串,遇到逗号,”会输出一个空格。

例如:print 'hello, world'

输入raw_input

Python提供了一个raw_input,可以让用户输入字符串,并存放到一个变量里。需要注意的是raw_input得到得结果是字符串,例如用户输入数值33,通过raw_input得到得变量整形数值33,而是字符串33,若是直接用于数值得加减,那么便会报错。

字符串如何转换为相应的变量值?可以通过如下方式:

如果是整形 a = int(str)  

如果是浮点型 a = float(str)

若是相应的字符串不能转换成对应的变量类型,那么也会报错。

因此若是要通过输入得到相应的变量类型,那么可以这样做,例如 c = int(raw_input),则输入33,便可以得到值为33的整形变量。

raw_input可以让你显示一个字符串来提示用户:

name = raw_input('please enter your name: ')

变量

整数:python的整数包括正数和负数,在程序中的表示方法和数学上的写法一模一样。十六进制用0x前缀。

浮点数:浮点数可以用数学写法,例如3.1415926;对于很大或很小的浮点数,就必须用科学计数法表示,把10e替代,1.63x109就是1.63e9

字符串:字符串是以''或""括起来的任意文本,比如'abc'"xyz"。如果字符串内部既包含'又包含"可以用转义字符\来标识,例如:'I\'m \"student\"!'Imstudent)。

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义。

布尔值:布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值。布尔值可以用andornot运算。布尔值经常用在条件判断中,而且比较操作符的结果都为布尔值。

空值:空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

常量: 在python中常量并没有类似C++const关键字用于表示常量的语法,用以保证某种数据类型的数值在运行过程中不可改变和更改,只能够靠程序员自觉遵守。

python中,并不需要定义变量类型,如在某个地方引用了变量,该变量在赋值的时候,其赋值的右值是什么类型的数值,在重新赋值之前,该变量就是什么类型的变量。

例如如下:

A = 1

.........

A =str

在变量赋值为整数1的时候,此时A的变量类型为整数,一直在A = str之前都是整数变量,在A=str之后,那么此时A不再是整数变量,而是字符串变量了,若是在之后,A当作整数进行运算,那么会出现错误结果或者运行报错,在python编码中要小心又小心,最好不要将一个变量赋两种不同类型的值,以避免这种错误。

list和tuple

listlist是Python内置的一种数据类型是列表。list是一种有序的集合,可以随时添加和删除其中的元素,且集合中的元素可以为不同变量类型的元素,且数据元素的个数为空。classmates = ['Michael', 'Bob', 'Tracy']

len()函数可以获得list元素的个数

用索引来访问list中每一个位置的元素,记得索引是从0开始的,最后一个元素的索引是len(classmates) - 1。如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素,若是倒数第二个元素的索引可以是-2,依次类推。

可以往list中追加元素到末尾append方法

要删除list末尾的元素,用pop()方法

要删除指定位置的元素,用pop(i)方法,其中i是索引位置

要把某个元素替换成别的元素,可以直接赋值给对应的索引位置

list中可以嵌套list,组成二维数组甚至三位数组等。

tuple:另一种有序列表叫元组:tuple。tuplelist非常类似,但是tuple一旦初始化就不能修改。classmates = ('Michael', 'Bob', 'Tracy'),只有1个元素的tuple定义时必须加一个逗号,,来消除歧义(避免被识别为函数)。在定义中,tuple在初始化的形式上可以省略括号。

除了通过索引值获取list和tuple中元素的值之外,python还提供了切片(slice)。

1:通过指定索引范围,对list进行截取。例如list数组L,取前面三个数值,则L[0:3],取前面N个值,则L[0:N],其中截取的list0N-1,是索引值0N的左开右闭的区间。如果第一个索引值是0,那么还可以省略,则为L[:N],当然该种方式也支持负数索引值。

2:listtuple都可以使用该种方式进行数据的截取,截取后得到的结果依旧是listtuple,字符串中字符也可以使用这种方式,截取后得到的结果是字符串(可以将字符串看成是单个字符组成的list)。

dictset

dict是Python内置的字典,与C++中的map的功能相似,用于存储使用键-值(key-value),能够通过key快速的检索对应的value值。

初始化

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

插入

d['Adam'] = 67

查找key对应的value

d[key]

如果key存在,就可以返回value值,如果key不存在,那么就会运行报错。在动态检索key的过程中,若是key不存在,运行报错中止程序的话这是很不方便的,因此我们可以在检索前查找是否在该dict中是否存在该key

两种办法,一是通过in判断key是否存在

 'Thomas' in d   存在就返回true,不存在就返回false

二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value,若是存在则返回对应的value值。

删除

要删除一个key,用pop(key)方法,对应的value也会从dict中删除

 

dict的key必须是不可变对象,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

Set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

要创建一个set,需要提供一个list作为输入集合s = set([1, 2, 3])

添加

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果

删除

通过remove(key)方法可以删除元素:

条件判断和循环

条件判断if语句

if <条件判断1>:

    <执行1>

elif <条件判断2>:

    <执行2>

elif <条件判断3>:

    <执行3>

else:

    <执行4>

需要注意的是if else语句的判断为后需要加上冒号:,而且判断为true的时候,执行的代码需要缩进。

循环

循环有两种,一种是while循环,一种是for循环。

while循环,只要条件满足,就不断循环,条件不满足时退出循环,其格式与if很像,循环代码执行主体需要缩进,其格式如下,记得while语句之后要加上冒号:

While <条件判断1>:

<执行1>

for循环

for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:

    sum = sum + x

一种是for...in循环,依次把listtuple中的每个元素迭代出来

例如:for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

在使用for对listtuple和字符串进行迭代时候,可以通过直接迭代或者使用索引值进行间接迭代。因为dict的是通过key-value进行存储的,因此在迭代的时候与listtuple都不一样,默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代keyvalue,可以用for k, v in d.iteritems()

在使用for可以对一些数据类型进行迭代,但若对一些不可迭代的数据迭代就会产生错误。如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断

 

注:is和==这两种运算符都可以对对象比较,比较是否相等,但是这两种运算符又有差别,其中,is是比较两个引用是否指向了同一个对象(引用比较),==是比较两个对象是否相等。

通过下标遍历list

在使用C/C++的时候,通常喜欢使用下表对数组进行遍历。在python中可以通过enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身。
classmates= ['Michael','Bob','Tracy']
fori ,name in enumerate(classmates):
    printi,name
    printclassmates[i]
运行结果如下:
0 Michael
Michael
1 Bob
Bob
2 Tracy
Tracy

同时引用两个变量遍历

for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:
 for x, y in [(1, 1), (2, 4), (3, 9)]:

列表生成

列表生成可以通过列表生成式或者列表生成器来进行程序生成。
列表生成式顾名思义,通过自定义表达式,可以快速生成list,可以通过一个list推导出另一个list,表达式一般和for循环写在一起,并通过方括号组成。
例如L=[1,2,3,4,5]的列表,要生成每个元素都是L中元素的平方,则 [x*x for x in L] 此表达式生成的就是一个对L的元素求平方的列表
列表生成式后面可以根据if来进行筛选,将不符合条件的元素刷选调,例如要生成的列表中偶数进行平方操作生成列表,则[x*x for x in ifx%2==0]
列表生成式还可以多层循环,可以生成全排列,例如两层循环,进行全排列,例如:[m + n for m in 'ABC' for n in 'XYZ']
生成器。通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。列表元素可以按照某种算法推算出来,我们可以在循环的过程中不断推算出后续的元素。在Python中,这种一边循环一边计算生成元素的,称为生成器(generator)。
创建一个generator
1、可以把一个列表生成式的[]改成(),就创建了一个generator。
例如g = (x * x for x in range(10))
2、可以将在函数定义的时候,如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。generator的函数,与普通函数不一样,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
对于生成器中的元素,我们可以通过generator的next()方法进行遍历,直到遍历玩到最后一个产生异常为止。
在绝大多数情况下,生成器的迭代一般可以用for循环就可以进行迭代遍历了。

原创粉丝点击