您的位置:首页 > 编程语言 > Python开发

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

2017-10-11 20:28 1026 查看

一、运算符

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

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/11
print(1+3)
#输出4
print(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 ,对应十进制数为 7
print(5|3)
#输出7

#按位异或
# 按位异或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个
#
# 相应的二进位不同则此位为 1,相同为 0。在本例中, 101 与 011 进行按位异或操作
#
# 的结果为 110 ,对应十进制数为 6 。
print(5^3)
#输出6

#布尔“非”
x=True
print(not x)
#输出False

#布尔“与”
x=False
y=1
print(x and y)
#输出False,否则输出y的值

#布尔“或”
x=True
y=False
print(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/11
number=23
guess=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++
4000
还是有区别的)


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/11

number=23
running=True

while 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/11
shoplist=['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是banana
print(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/11

p=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有区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: