Python入门(二)——运算符,求值顺序,if/for/while语句,list,tuple,dict,seq,set

2017-10-12 07:38:58来源:CSDN作者:w_linux人点击

分享

一、运算符

下面我举一些常见的,部分没有写

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11print(1+3)#输出4print(13/3)#输出4.333333333333333#向下取整至最接近的整数print(13//3)#输出4#取模print(13%3)#输出1#按位与#按位与是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相#应的二进位都为 1 则此位为 1,否则为 0。在本例中, 5 的二进制表达为 101 , 3 的#二进制表达为 11 (为补全位数进行按位操作写作 011 ),则按位与操作后的结果为#001 ,对应的十进制数为 1 。print(5&3)#输出1#按位或#按位或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相#应的二进位有一个为 1 则此位为 1,否则为 0。在本例中, 101 与 011 进行按位或操#作后的结果为 111 ,对应十进制数为 7print(5|3)#输出7#按位异或# 按位异或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个## 相应的二进位不同则此位为 1,相同为 0。在本例中, 101 与 011 进行按位异或操作## 的结果为 110 ,对应十进制数为 6 。print(5^3)#输出6#布尔“非”x=Trueprint(not x)#输出False#布尔“与”x=Falsey=1print(x and y)#输出False,否则输出y的值#布尔“或”x=Truey=Falseprint(x or y)#输出True

二、求值顺序(优先级)

这里写图片描述


三、控制流(if,for,while语句)

1、if语句(注意语句后的冒号)

含义与其对应的else,还有elif(elif后面也需要和if一样加条件判断)

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11number=23guess=int(input(r'please input integer:'))if guess==number:    print(r'guess==number')elif guess<number:    print(r'guess<number')else:    print(r'guess>number')

2、while语句

while语句同样也可以用else作为另一选项(这和CC++还是有区别的)

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11number=23running=Truewhile running:    guess=int(input(r'please input integer:'))    if guess==number:        running=False    elif guess<number:        running=False    else:        print(r'error')else:    print(r'while byebye')#输出:#D:/Py3.6/python.exe D:/Pylearn/3.py#please input integer:50#error#please input integer:23#while byebye

3、for语句(for..in..)

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11#range函数生成从1到4的序列for i in range(1,5):    print(i)print('/n')for i in range(1,5,2):    print(i)for i in 'python':    print('字母是',i)print('/n')i=['aaa','bbb','ccc']for m in i:    print('i是',m)print('/n')#执行循环的遍历方式是通过索引i=['aaa','bbb','ccc']for m in range(len(i)):    print(i[m])#输出:D:/Py3.6/python.exe D:/Pylearn/3.py#1#2#3#4#1#3#字母是 p#字母是 y#字母是 t#字母是 h#字母是 o#字母是 n#i是 aaa#i是 bbb#i是 ccc#aaa#bbb#ccc

四、数据结构(List,Tuple,dict,seq,set)

1、List(列表)

列表是一种用于保存一系列有序项目的集合
它有很多方法可通过列表对象加.来获得,比如mylist.append是向列表中添加元素,sort是排序….

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11shoplist=['apple','mango','carrot','banana']length=len(shoplist)print('长度:',length)for index in range(len(shoplist)):    print('依次输出:',shoplist[index])print('第一个list:',shoplist[0])print('增加一个list')shoplist.append('rice')print(shoplist)print('对list排序')shoplist.sort()print(shoplist)print('删除一个list')del shoplist[0]print(shoplist)print('list中放不同的数据类型')shoplist.append(1)print(shoplist)print('list中放list')shoplist.append(['ss','rr'])print(shoplist)print('输出list中的list中的值')print(shoplist[5][1])#依次输出结果# D:/Py3.6/python.exe D:/Pylearn/数据结构.py# 长度: 4# 依次输出: apple# 依次输出: mango# 依次输出: carrot# 依次输出: banana# 第一个list: apple# 增加一个list# ['apple', 'mango', 'carrot', 'banana', 'rice']# 对list排序# ['apple', 'banana', 'carrot', 'mango', 'rice']# 删除一个list# ['banana', 'carrot', 'mango', 'rice']# list中放不同的数据类型# ['banana', 'carrot', 'mango', 'rice', 1]# list中放list# ['banana', 'carrot', 'mango', 'rice', 1, ['ss', 'rr']]# 输出list中的list中的值# rr

2、Tuple(元组)

tuple和list很相似,但是他一旦确定了元素之后就不能变化了。他也没有什么增加,删除的函数,因为他不变,所以安全性高

利用括号来包含元素

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

test = (1, 2, 3)print test

如果你想定义一个空的tuple,那么只要这样

test = ()print test

如果需要它元素可变的话,只需要它的元素是list就好

test = (5,[1,2])print(test)test[1][1]='x'print(test)输出:# D:/Py3.6/python.exe D:/Pylearn/数据结构.py# (5, [1, 2])# (5, [1, 'x'])

3、dict(字典)

dict含有键值(key)(即姓名)和值(value)(即地址等详细信息),注意
:键值必须是唯一的,值可以很多。

你只能使用不可变对象(如字符串)作为dict的键值

通式:d={key1:value1,key2:value2}

比如以下d为dict

d={'xulinjie':'xlj@qq.com','xjxjxj':'op@qq.com'}

我想知道xulinjie的邮箱

print(d['xulinjie'])#输出:#D:/Py3.6/python.exe D:/Pylearn/数据结构.py#xlj@qq.com

删除一对键值-值

d={'xulinjie':'xlj@qq.com','xjxjxj':'op@qq.com'}#删除一对键值-值配对del d['xulinjie']#输出d,items方法是访问字典中每一对键值-值配对信息for name,address in d.items():    print('{0}:{1}'.format(name,address))#输出:#D:/Py3.6/python.exe D:/Pylearn/数据结构.py#xjxjxj:op@qq.com

添加一对键值-值

d={'xulinjie':'xlj@qq.com','xjxjxj':'op@qq.com'}#添加一对键值-值配对d['bbb']='ibib@qq.com'for name,address in d.items():    print('{0}:{1}'.format(name,address))#输出:#D:/Py3.6/python.exe D:/Pylearn/数据结构.py#xulinjie:xlj@qq.com#xjxjxj:op@qq.com#bbb:ibib@qq.com

和list比较,dict有以下几个特点:

1、查找和插入的速度极快,不会随着key的增加而增加;

2、需要占用大量的内存,内存浪费多。

而list相反:

3、查找和插入的时间随着元素的增加而增加;

4、占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。


4、seq序列

列表、元组和字符串可以看做序列的某种表现形式

序列主要功能是资格测试(也就是in与not in表达式)和索引操作,他们能够允许我们直接获取序列中的特定项目

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11#列表序列shoplist=['apple','mango','carrot','banana']#字符串序列name='xulinjie'#输出序列中某个特定的print(shoplist[0])print(shoplist[-1])print(name[0])print('/n')#输出序列中从指定开始位置到指定结束位置#如果不指明开始或者结束位置,则从头到尾print(shoplist[0:3])print(shoplist[1:-1])#-1是bananaprint(name[1:4])print(shoplist[0:])print('/n')#使用双冒号加上步长参数#若步长为2,则得到第0/2/4位项目print(shoplist[::2])print(shoplist[::1])#输出:# D:/Py3.6/python.exe D:/Pylearn/数据结构.py# apple# banana# x# # # ['apple', 'mango', 'carrot']# ['mango', 'carrot']# uli# ['apple', 'mango', 'carrot', 'banana']# # # ['apple', 'carrot']# ['apple', 'mango', 'carrot', 'banana']

5、set(集合)

是简单对象的无序集合(输出是一个集合)

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:

#!/usr/bin/env python# -*- coding:utf-8 -*-# author: xulinjie time:2017/10/11p=set([1,2,3])print(p)#有自动过滤功能s=set([1,1,2,3,4,4,1])print(s)print(1 in s)#判断1是否在s集合中sc=s.copy() #复制集合中的元素sc.add('zhejiang')#issuperset   #判断b是否是a的超集#超集定义:如果一个集合S2中的每一个元素都在集合S1中,#且集合S1中可能包含S2中没有的元素,#则集合S1就是S2的一个超集。 S1是S2的超集,则S2是S1的真子集,反之亦然print(sc.issuperset(s))sc.remove(1) #删除序列中指定的元素print(sc)print(s&sc)#取sc和s的交集print(s|sc)#取sc和s的并集#输出:# D:/Py3.6/python.exe D:/Pylearn/数据结构.py# {1, 2, 3}# {1, 2, 3, 4}# True# True# {2, 3, 4, 'zhejiang'}# {2, 3, 4}# {1, 2, 3, 4, 'zhejiang'}

不过虽然说集合有过滤功能,但假如将list放入set那还是“不能达到去重效果”(注意,是加双引号了,哈哈)

p=set([1,2,3])print(p)p.add('1,2')print(p)#输出:#D:/Py3.6/python.exe D:/Pylearn/数据结构.py#{1, 2, 3}#{1, 2, 3, '1,2'}

注意:我的py都是在3.6版本下的,所以会和2.x有区别

微信扫一扫

第七城市微信公众平台