本文在CSDN博客首发
转载请注明出处
http://blog.csdn.net/u011071427/article/details/78792103
本文出自Allen李的博客
Python入门
目录
1.Python基本数据类型
2.Python的print语句
3.Python的注释
4.Python的变量
5.Python中raw字符串与多行字符串
6.Python当中的Unicode字符串
7.Python中的整数和浮点数
8.Python中的布尔类型
9.Python中的List
10.Python中的tuple
11.Python中的条件判断和循环
12.Python中的dict
13.Python中的set
14.Python中的函数
15.Python中对字符串切片
16.Python中的迭代
Python基本数据类型
- 整数:1,-1,0,以及十六进制整数:0xff00,0xa5b4。
- 浮点数:1.23,3.13,-0.12。
- 字符串:字符串是以”或者”“包起来的任意文本。如果字符串本身有’或者”,那就需要转义”\”。
- 布尔值:只有True和False,布尔值可以通过and(与运算)、or(或运算)、not(非运算)进行运算。
- 空值:用None表示,不能理解为0,因为None是一个特殊的空值。
Python的print语句
- print语句打印字符串的时候遇到逗号“,”会输出一个空格。
print 'god is a','girl.'
god is a girl.
Python的注释
- Python的注释以#开头,然后这一整行都算注释。
Python的变量
- 变量的命名:必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。
-在Python中,变量本身类型不固定,被称之为动态语言,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
Python中raw字符串与多行字符串
- 如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r,表示这是一个 raw 字符串,里面的字符就不需要转义了。
- 如果包表示多行字符串,可以用”’…………”’来表示。
- 如果多行需要转义的字符串,可以用r”’…………”’来表示。
Python当中的Unicode字符串
因为Python诞生的比Unicode标准发布时间还要早,所以Python默认支持ASCII编码,要想使用中文,需要让Python支持Unicode编码格式需要:
- 转义,加u。
u'中文\n日文\n韩文'
u'''第一行
第二行'''
ur'''…
…
…
…'''
- 如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
Python中的整数和浮点数
Python中的布尔类型
- Python把0、空字符串”和None看成 False,其他数值和非空字符串都看成 True。
- 短路计算
① 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
② 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
- 如果a and b中a和b都是字符串或者整数,会返回相应的类型,而不是True或者False。
Python中的List
- List是一种有序的集合,可以随时添加和删除其中的元素。
- 构建List只需要把所有元素用[ ]括起来就是一个List对象,通常把List赋值给变量,这样就可以通过变量来引用List。
- List中包含的元素并不要求都必须是同一种数据类型,完全可以包含各种数据。
- 一个元素也没有的是List,就是空List,用[]来表示。
- List的索引从0开始,即List的第一个元素是:L[0]。使用索引时,千万注意不要越界。
- List的倒序索引用L[-1]来表示倒数第一个元素,然后L[-2]表示倒数第二个元素。
- List添加新元素有两个方法:
①append()方法,把新元素添加到List的末尾,L.append(‘Paul’)。
②insert()方法,这个方法有两个参数,第一个参数是索引号,第二个参数是待添加的新元素,L.insert(0,’Paul’)。
- List删除元素的方法:pop()方法,L.pop()会删除List的最后一个元素,而L.pop(2)会删除List当中索引号为2的元素。
- List替换元素可以用索引号,直接赋值,就可以完成替换工作,L[1]=’Paul’。
- 对List进行切片:L[x:y:z],x代表索引号,y代表索引截止号,z代表每隔第几个取出一个。
L[0:3]
L[:3]
L[:]
L[::2]
Python中的tuple
- tuple是另外一种有序的列表,跟List的不同之处在于Tuple一旦创建完毕,就不能修改了。
- 构建tuple是是通过()把所有元素都括起来。
- tuple没有append()、insert()、pop()方法,已经不可以替换原有元素。
- tuple可以包含0个、1个和任意多个元素。空的tuple直接用()表示。
- 因为()既可以表示tuple,也可以作为括号表示运算时的优先级,所以我们在定义单元素的tuple时要多加一个逗号“,”,这样就可以避免歧义:t = (1,)。
- python中可变的tuple,t = (’a’,’b’,[‘A’,’B’]),可以通过L = t[2],L[0]=’X’ L[1] = ‘Y’来更换tuple内部的List发生变化,但是tuple并没有发生变化。
- tuple的切片,和list一样,只不过换成了tuple。
Python中的条件判断和循环
- Python代码的缩进规则:==具有相同缩进的代码被视为代码块。==
- Python缩进的规则是4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易因为缩进引起的语法错误。退出缩进需要多敲一行回车。
- if-else:当if为真,执行if包含的代码块,else以后,会执行else:后的代码块
- if-elif-else:当一个if-else不够用的时候就需要if-elif-……-else来使用
- for循环:注意写法,会先执行循环代码块,执行完毕以后退出循环
L=['Adam','Lisa','Bart']
for name in L:
print name
- while循环:注意写法,会先执行循环代码块,执行完毕以后退出循环
N = 10
x = 0
while xprint x
x = x + 1
- 在for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。
- 在循环过程中,可以使用break,退出当前循环,还可以使用continue跳过后继续循环代码,继续下一次循环。
- 多重循环:在循环内部,嵌套循环。
Python中的dict
- dict是类似java当中的Map,无序集合。
- 构成是用{‘adam’:95,’lisa’:80}括起来,最后一个key:value的逗号可以省略。
- len()方法用来计算任意集合的大小。
- 查找value,可以使用d[key]的形式查找相应的value。
- 可以通过in操作符判断key是否存在。
- dict同时提供一个get方法,get(key)得到value,key不存在的时候,返回None。
- dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。由于dict是按 key 查找,所以,在一个dict中,key不能重复。
- dict的第二个特点就是存储的key-value序对是没有顺序的。
- dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
- dict更新:用赋值语句加进去,d[‘paul’] = 72,如果’paul’已经存在,那么赋值语句会用心的value替换掉原来的value,如果不存在,则会添加进去。
- 遍历dict可以通过for循环,得到所有的key,然后根据key拿到value。
Python中的set
- set是类似java当中的set,无序不重复集合。
- 创建set的方式是调用set()并传入一个list,list的元素将作为set的元素
s = set([1,2,3,4,5])
- set的访问:因为set是无序集合,所以我们没法通过索引来访问,只能通过in操作符来判断是否存。
- set的特点:set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
- set的特点:set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
- set的特点:最后,set存储的元素也是没有顺序的。
- 遍历set可以使用for循环。
- set添加新元素,可以通过set的add(),如果添加的元素已经存在于set中,add()不会报错,但是不会添加进来。
- set删除元素,可以通过set的remove()方法,但是如果元素不存在,remove()会报错,使用前需要判断
Python中的函数
- Python中调用函数需要知道函数的名称和参数。
- 在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在==缩进块==中编写函数体,函数的返回值用 return 语句返回。
- Python函数返回多值,在Python中函数允许返回多值,返回的结果会是一个tuple类型的返回值。
- Python的函数中可以定义默认参数,作用是简化调用,还需要把必须的参数传进去,但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
- Python的函数中定义可变参数,在可变的参数的名字前面加一个*号,这样就可以传入零至多个参数,在Python中,会把可变参数当成一个tuple传入到函数中。
Python中对字符串切片
- 字符串’xxx’和Unicode字符串u’xxx”也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。
Python中的迭代
- 在Python中,迭代是通过for……in来完成的。
- 在Python中,迭代是取出元素本身,而不是元素的索引。
- 在对有序集合,想要拿到本身的索引,可以通过enumerate()函数,该函数可以让有序集合中的每一个元素都变成了tuple,这样就可以拿到元素的索引值了。
L = ['adam','lisa','bart','paul']==>L = [(0,'adam'),(1,'lisa'),(2,'bart'),(3,'paul')]
for t in enumerate(L):
index = t[0]
name = t[1]
print index,'-', name
for index,name in enumerate(L):
print index,'-',name
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
for v in d.values():
print v
for v in d.iteravlues():
print v
输出结果都一样,都是全部把dict的value值全部输出,但是不同之处在于values()方法实际是把一个dict转换成了包含所有value的list,而itervalues()方法不会转换,他会在迭代过程中依次从dict中取出value,所以itervalues()方法比values()节省了生成list的内存。
- 迭代dict的key和value,可以通过items()方法,将dict对象转化成了包换tuple的list,然后对这个list进行迭代,可以同时获得key和value。items()同样有一个iteritems()方法,在迭代过程中,不短给过tuple,所以iteritems()不占用额外的内存。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print(d.items())
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]