本文针对有一定其他编程语言知识的人,侧重在python特有的地方:
Python基础
针对有c++等语言基础的人,着重指出不同点
变量:
变量运算
Python变量不需要声明,也不需要指出变量类型。
除了常用的运算外,**表示幂运算,并不是^;
\\ 表示整除运算,只返回商的整数部分
并且python支持多条件比较,比如0<=middle<10
不同类型的变量是不能用大小比较的,但是支持==和!=比较
浮点类型和整数类型虽然不是同一种类型,但是可以进行比较
print(3.0>1)
结果为True
在Python中同样支持True =1; False=0,因此可以进行计算print(True+True-False)得到2;
in is is not
把in放在两个对象之间,可以判断前者是否在后面的集合对象中。字符串类型、列表等有集合属性的都可以用。示例见list部分
is 和is not 表示身份鉴别的布尔运算符。在python中任何一个对象都要满足身份(identity)、数据类型(type)、值(value)这三者。is就是用来身份对比的。
==VS is
==是比较运算符,用来比较两个对象的值是否相等
is又叫同一性运算符,这个运算符比较的是对象间的唯一身份标识。
a=[1,2,3]
b=[1,2,3]
print(a==b,a is b)
得到的结果分别是True和False。不过若换作是字符串类型,由于其存储的特殊性,两个运算的结果都是True
python中所有变量都可以判断其布尔值,除了0、None、空的序列与集合(空字符串空列表等)外,其他都是True,可以由bool()函数来判断
字符串类型
表示和运算:
不区分单引号和双引号的,可以直接用加号进行连接。Str = ‘aaa’;len(str)可以得到字符串长度;除了做加法,可以与整数相乘,比如str*3,会得到aaaaaaaaa
除了可以像c++ string一样的索引,即str[0]这样,还可以一次截取一段连续的:
Str=’aaaaaaaaaaaaaaaaa’; print(Str[2:5])会输出第2个到第4个(从0开始的索引);甚至还可以用负索引,最后一个字符的索引是-1,倒数第二个是-2等等,print(Str[-5,-2])可以输出倒数第5个到倒数第3个。
Python中没有分号,而是使用缩进,所以同一行如果太长了想换行,要用\并且下一行缩进。在IDE中一般可以直接回车。
字符串类型还有一些内置的方法,比如replace()、find()
字符串格式化符,{}有点类似%d的占位作用,后面在点后跟format()举个例子:
print('{} is a good {}'.format('A','b'))
输出 A is a good b
还可以用数字指出分别填充哪个位置:
print('{1} is a good {0}'.format('A','b'))
还可以用一些名字来指明:
print('{name} is a good {name2}'.format(name='A',name2='b'))
有一些基本的类型转化函数,如str() int() float()等,不需要cast等强制类型转化
Python3以上的版本,输出函数是print(),中间可以有多个,用逗号隔开,默认是以空格间隔,如果想多个参数之间用换行的话可以加:
print('a=1','b=2',sep='\n')
函数
def 关键字定义函数。注意后面要加冒号,后面的函数体要缩进。其他语言通常是用大括号的,但是python没有
初次接触时冒号非常容易忘记。
def 函数名(参数):
…
return…
def func(b):
c = b+2
return c
print(func(4))
当不写return时返回的就是None
有多个参数时,一般c++中是按照顺序(当然类型要一致),但是Python中可以用形参指明位置:
def func(b,d):
c = b+d
return c
print(func(d=4,b=2))
这种叫关键词参数。在正序的时候两种传入甚至可以混用,但是当输入参数顺序与形参不一致时,必须全都使用关键词参数。
文件
open()打开文件,两个参数,文件路径和打开方式。
没写绝对路径,所以会在当前工作空间打开(没有的话会新建)一个文件,write函数可以直接向该文件中写入。
最后记得file.close()关闭文件
循环与控制结构:
if:
if condition:
[缩进]do sth.
elif condition:
[缩进]do sth
else:
[缩进]do sth
通常其他语言是没有elif关键词的,自己的体验就是,如果不要IDE非常容易忘记冒号。
for:
for item in iterable:
[缩进]do stn
其中item是自己起的名字,表示后面课迭代集合中的一项,是可以在循环体中使用的名字。iterable就是可迭代的对象,列表啊数组一类。也是有冒号的。
while:
while condition:
[缩进]do sth
并不信箱,除了冒号跟很多其他语言的格式是一样的
内置数据结构:
python四种内置数据结构:列表、字典、元组、集合。
简单来讲,分别长这样:
lists=[1,2,"a",2.0,[1,2,4],print(1)]
dic = {1:'a',2:'b'}
tuple =(1,2,3,4,5)
set={'a','b','c','d'}
列表
list[],有点像数组,但是各种类型都可以往里面放,甚至可以放新的列表。用list.append()就可以向列表尾部中新添加数据。索引与字符类型的相似。
newList=['a',1]
newList.append(2.0)
print(newList[-1],newList[1])
in
print('a'in newList)
可以输出True
In 关键字后面是一个集合形态的对象
列表中可以容纳python中的所有对象类型,并且可以被索引,如lists[0]
操作:
插入:lists.insetr(位置,待插入元素)
删除:lists.remove(要删除的元素),也可以用lists[0]=3直接替换掉原来0位置处的元素
索引:也是可以正反两个方向索引
Sorted()函数,会将列表复制一份,然后排序(但是列表里的元素得是可以互相比较的。)
zip()可以打包处理多个列表:
lists=[1,2,"a",2.0,[1,2,4],print(1)]
newlist=[1,2,3,4,5]
fora,bin zip(lists,newlist):
print(a,'and',b)
不过是以最短的列表长度为对应的循环次数。
结果:
1 and 1
2 and 2
a and 3
2.0 and 4
[1, 2, 4] and 5
列表推导式:
li=[ifor i in range(1,10)]
for a in li:
print(a)
会输出1-9
也就是lists = [item for item in iterable]
在循环列表同时得到元素的索引:
Python特有的函数enumerate
fornum ,itemin enumerate(lists):
print(num,item)
字典
字典的特征是每个元素都是一对键-值对。键不可重复而值可以。键不可变而值可变,且值可为任意类型。
插入:
可以用这样的方式进行字典的插入:
dic['d']='e'
print(dic)
还可以用这样的方式进行批量插入:
dic.update({4:'a','e':6})
print(dic)
删除:del方法
deldic[2]
索引:仍然是用中括号,但是不能切片,中括号中放的一定是键,只能通过键来索引
元组
相当于固定的列表,是不可以修改的——不能增加或删除,但是可以索引
集合
无序的、不重复的。不能被切片也不能被索引。可以做集合运算、添加和删除。
set.add('e')
set.discard('a')
print(set)
第三方库
可以再awesome-python.com上查找python库。
安装python库:
可以利用IDE如Pycharm,file->default settings->进入project interpreter,选择当前的python版本,点击添加,然后搜索库->勾选并install
可以在project interpreter里查看安装了什么库
也可以在终端中pip install 库名来安装
条件:
python中经常会有非常简单的条件表示:
[w for w in W if condition]
就会保存所有W中符合条件condition的w到列表中
对每个元素进行操作:
[f(w) for ...] 或[w.f() for ...]
如:w.lower() for w in text1