Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
列表[]
遍历技巧
在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
元组()
字典 {key1 : value1, key2 : value2 }
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
遍历技巧
在字典中遍历时,关键字和对应的值可以使用 items() 方法同时解读出来:
>>> knights = {'gallahad'python: 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
集合{}
- 集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { }
是用来创建一个空字典。
条件语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
循环语句
1、循环条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在 Python 中没有 do…while 循环。
无限循环语句
你可以使用 CTRL+C 来退出当前的无限循环。 无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块
#!/usr/bin/python3
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
while 循环语句和 for 循环语句使用 else 的区别:
1、如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
# python 冒泡排序
def paixu(li):
max = 0
for ad in range(len(li) - 1):
for x in range(len(li) - 1 - ad):
if li[x] > li[x + 1]:
max = li[x]
li[x] = li[x + 1]
li[x + 1] = max
else:
max = li[x + 1]
print(li)
if __name__ == '__main__':
paixu([41, 23344, 9353, 5554, 44, 7557, 6434, 500, 2000])
#python 选择排序
a = [1, 5, 4, 2, 2, 21, 12, 7, 0]
b = list(set(a)) # 建立新的列表,嵌套的是集合(除去冗余元素并自动排序)
c = [] # 建立空列表,用来存放选择排序的数据
for j in b: # 集合列表中选择元素
for i in a: # 列表中选择元素,
if i == j:
print(i)
c.append(i)
print(c)
迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象都可用于创建迭代器:
>>> list=[1,2,3,4]
>>> it = iter(list) # 创建迭代器对象
>>> print (next(it)) # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>>
- 迭代器对象可以使用常规for语句进行遍历:
#!/usr/bin/python3
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
for x in it:
print (x, end=" ")#1 2 3 4
- 也可以使用 next() 函数:
import sys # 引入 sys 模块
list = [1, 2, 3, 4]
it = iter(list) # 创建迭代器对象
while True:
try:
print(next(it))
except StopIteration: #StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况
sys.exit()
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
例:
def get():
m = 0
n = 2
l = ['s', 1, 3]
k = {1: 1, 2: 2}
p = ('2', 's', 't')
while True:
m += 1
yield m
yield m, n, l, k, p
it = get()
print(next(it)) # m=1
print(next(it)) # m, n, l, k, p=(1, 2, ['s', 1, 3], {1: 1, 2: 2}, ('2', 's', 't'))
print(next(it)) # m=2
print(next(it)) # m, n, l, k, p=(2, 2, ['s', 1, 3], {1: 1, 2: 2}, ('2', 's', 't'))
print(next(it)) # m=3
print(next(it)) # m, n, l, k, p=(3, 2, ['s', 1, 3], {1: 1, 2: 2}, ('2', 's', 't'))
print(type(next(it))) # <class 'tuple'>
- 打个比方的话,yield有点像断点。加了yield的函数,每次执行到有yield的时候,会返回yield后面的值并且函数会暂停,直到下次调用或迭代终止; (这就很好的解释了上例,在while循环中,计算完m的值后,就通过yield在迭代器中返回一个m的值外加一个包含当前m值的元组,然后迭代输出,终止后继续进行while的下次循环,再次返回迭代器,再次输出…以此类推)
- yield后面可以加多个数值(可以是任意类型),但返回的值是元组类型的。