【python】自学笔记
1.环境安装
1.1 python 工作环境 2.7.14
1.2 pycharm community2018.1.1 4 x64
2.第一行代码
2.1 python交互模式,
>>>10+20
30
exit() 可退出交互模式。
2.2 运行.py文件 在命令行模式(.py文件所在文件夹)输入
python test.py
Python交互式环境会把每一行Python代码的结果自动打印出来,但是,直接运行Python代码却不会。
2.3 hello.py(输入与输出)
print 'please input your name'
name=raw_input()
print'hello',name
3.python基础
3.1 数据类型
3.1.1整数 1, 100 ,-8
需要注意的是,整数的除法也是准确的 。python的除法分为两种,
第一种:/结果为浮点数。
>>> 10 / 3
3.3333333333333335
>>> 9 / 3
3.0
第二种 // 地板除 结果为整数
>>> 10 // 3
3
>>> 9 //3
3
3.1.2浮点数 1.23 、1.23x10(1.23e9,12.3e8)
,0.000012(1.2e-5)
3.1.3字符串 注意字符串中包含'' ""等时,需要转义字符\
>>> print 'I\'m \"ok\".'
I'm "ok".
>>> print '\\\n\\'
\
\
字符串的多行输入:
>>> print '''line1
... line2
... line'''
line1
line2
line
Python还允许用r""
表示r" "内部的字符串默认不转义
>>> print'\\\t\\'
\ \
>>> print r"\\\t\\"
\\\t\\
3.1.4布尔类型 (True False)
>>> 3 > 2
True
>>> 3 > 5
False
3.1.5 空值 None
3.1.6 变量
python 弱类型 不需要说明变量的类型可直接赋值。
>>> a= 123
>>> print a
123
>>> a='ABC'
>>> print a
ABC
理解变量在计算机内存中的表示也非常重要。当我们写:
a = 'ABC'
时,Python解释器干了两件事情:
1)在内存中创建了一个'ABC'
的字符串;
2)在内存中创建了一个名为a
的变量,并把它指向'ABC'
。
也可以把一个变量a
赋值给另一个变量b
,这个操作实际上是把变量b
指向变量a
所指向的数据,例如下面的代码:
a = 'ABC'
b = a
a = 'XYZ'
print b
3.1.7 常量
PI = 3.14159265359 python 没有任何机制能保证PI 的值不被修改。
3.2 字符串以及编码
3.2.1 编码
python 2.x中支持ASCII编码,后来又添加的对Unicode的支持。 如下。
>>> print u'中文'
中文
>>> u'中'
u'\u4e2d'
python3.x中就可以直接使用中文了。
>>> print('包含中文的str')
包含中文的str
3.2.2格式化
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
%%来表示一个%
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'
3.3使用list和tuple
3.3.1 list
list是一种有序的集合,可以随时添加和删除其中的元素。
>>> classname=['Tom','YM','Mary'] >>> len(classname) #求list长度 3 >>> classname[0] #获取第一个元素 'Tom' >>> classname[-1] #获取最后一个元素 'Mary' >>> classname.append('KK') #向list里面插入元素 >>> classname #显示list中的元素 ['Tom', 'YM', 'Mary', 'KK'] >>> classname.pop() #删除最后一个元素 'KK' >>> classname ['Tom', 'YM', 'Mary'] >>> classname.pop(1) #删除指定位置元素 'YM' >>> classname ['Tom', 'Mary'] >>> classname[1]='KKK' #替换指定位置元素为新元素 >>> classname ['Tom', 'KKK']
list里面的元素的数据类型也可以不同,比如:
>>> L = ['Apple', 123, True]
list元素也可以是另一个list,比如:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme'] >>> len(s) 4
要注意s
只有4个元素,其中s[2]
又是一个list,如果拆开写就更容易理解了:
>>> p = ['asp', 'php'] >>> s = ['python', 'java', p, 'scheme']
要拿到'php'
可以写p[1]
或者s[2][1]
3.3.2 tuple
tuple一旦初始化就不可再变
>>> tuple=('1','Tom','YM') #定义一个tuple >>> tuple ('1', 'Tom', 'YM') >>> t=(1,2) >>> t (1, 2) >>> t=(1,) #定义一个只有一个元素的tuple >>> t (1,) >>> t=() #定义一个空的tuple >>> t
但是如果tuple中包含list 那么tuple中的list不会变,但是list中的元素是可以改变的。
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])
3.4 条件判断与循环
3.4.1 条件判断 注意else:中的:
>>> age = 3 >>> if age >= 18: ... print 'your age is', age ... print 'adult' ... else: ... print 'your age is', age ... print 'teenager' ... your age is 3 teenager
条件判断的规则为:
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
3.4.2循环
Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:
names = ['Michael', 'Bob', 'Tracy'] for name in names: print name
计算1-101的和-----5050
sum = 0 for x in range(101): sum = sum + x print sum
python的另外一种循环就是while 注意while后面的冒号
sum=0 n=100 while(n>0): sum+=n n=n-1 print sum
3.5使用dict和set
3.5.1 dict
类似于java中的map 键值对形式。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95
一个key对应一个value,如果后面存入一个已经存在的key,那么新存入的value就会覆盖之前的value。
>>> d={'YM':1,'Bob':2,'KK':3} #初始化一个dict >>> d {'KK': 3, 'Bob': 2, 'YM': 1} >>> d['YM'] #通过某个key获取对应的value 1 >>> 'To' in d #判断dict是否存在某个key False >>> d.pop('Bob') #删除dict中的某个key 这时对应的value也会一起被删除 2 >>> d {'KK': 3, 'YM': 1}
如果key不存在,程序报错。可通过两种方法判断一个key是否存在。
#1 >>> 'Thomas' in d False #2 >>> d.get('Thomas') >>> d.get('Thomas', -1) -1
dict是查找方式类似于字典,可以根据key直接得到value的存储位置。这也是一种空间换时间的方法,所以dict的特点就是查找插入的速度极快,但是占用大量内存,浪费很多内存。(list的查找方式就是顺序查找,存入的元素越多,查找速度就越慢。)
需要注意,dict的key必须是不可变对象,所以list不可以作为dict的key。
3.5.2 set
set存储一组key但是不存储value,也就是set存储不重复的一组元素。
>>> s = set([1, 1, 2, 2, 3, 3]) >>> s set([1, 2, 3])
基本操作:
>>> s=set([1,2,3]) #初始化一个set >>> s set([1, 2, 3]) >>> s=set([1,1,2,2,3,4,5]) #set保存不重复的元素,自动去重。 >>> s set([1, 2, 3, 4, 5]) >>> s.add(7) #向set添加元素 >>> s set([1, 2, 3, 4, 5, 7]) >>> s.remove(3) #删除set中某元素 >>> s set([1, 2, 4, 5, 7]) >>> s1=set([1,2,3]) >>> s2=set([2,3,4]) >>> s1&s2 #对两个set求交集 set([2, 3]) >>> s1|s2 #对两个set求并集 set([1, 2, 3, 4])
set中存储的元素跟dict中的key一样,所以不能重复,也不能存入可变元素 如list。
3.5.3 不可变对象
字符串是不可变对象,而list是可变对象。
对于不可变对象 str
>>> a = 'abc' >>> a.replace('a', 'A') 'Abc' >>> a 'abc'
字符串调用replace函数,实际上是新建了一个字符串‘Abc’,并返回,但是a仍然指向原来的‘abc’字符串。将代码给为如下:
>>> a = 'abc' >>> b = a.replace('a', 'A') >>> b 'Abc' >>> a 'abc'
需要注意,list与tuple均不可以作为dict与set的key。tuple虽然是不可变对象,但是不可变得是地址,tuple的值是可变的。