Python
- 01.切片
- -
1.切片是python中一种很有特色的操作,也是很python的。
2.切片的操作,用的最多的是元组和列表。
# 例子
print(15*'*'+'list'+15*'*')
l = [1,2,3,4,5,6]
#1.取[1,3)的元素打印
print(l[1:3])
#2.每两个取一个数
print(l[::2])
#3.打印倒数第三个到最后一个
print(l[-3:-1])
#4.逆序打印
print(l[::-1])
print(15*'*'+'tuple'+15*'*')
t =('a','b','c','d','e','f')
print(t[1:3])
#程序执行结果
***************list***************
[2, 3]
[1, 3, 5]
[4, 5]
[6, 5, 4, 3, 2, 1]
***************tuple***************
('b', 'c')
('a', 'c', 'e')
('d', 'e')
('f', 'e', 'd', 'c', 'b', 'a')
[Finished in 0.1s]
#消除字符串尾部的空格
def myStrip(s):
if not isinstance(s,str):
raise TypeError('no str !')
if s ==' ':
return s
while s[0]==" ":
s=s[1:]
while s[len(s)-1] ==" ":
s= s[:-1]
return s
s1 = myStrip('hah ')
s2 = myStrip(' hah')
s3 = myStrip(' hah ')
#程序执行结果
print(len(s1))
print(len(s2))
print(len(s3))
- 02.迭代
1.迭代已经不再陌生,但是Python和shell一样都提供了一种特殊的for迭代
2.可以用for进行遍历的这样的称之为可迭代。
3.可迭代和迭代器是不是一样
#例子
d ={1:'a',2:'b',3:'c',4:'d',5:'e',6:'f'}
#访问字典
for item in d.items():
print(item)
#访问字典key
for key in d.keys():
print(key)
#访问字典value
for value in d.values():
print(value)
#下标进行访问(enumerate)
for index ,value in enumerate(['a','b','c','d']):
print(index,value)
- 03.生成式
1.这个特性也是python所常见,也很python
2.在平时也是经常使用的手段,方便
#列表生成式
l = [i for i in range(5)]
print(l)
l1 = [x for x in range(5) if x& 0x01==0]
print(l1)
#字典生成式
d ={x:str(x) for x in range(10) if x&0x01 }
print(d)
d1 ={}.fromkeys([i for i in range(5)])
print(d1)
#程序执行结果
[0, 1, 2, 3, 4]
[0, 2, 4]
{1: '1', 3: '3', 5: '5', 7: '7', 9: '9'}
{0: None, 1: None, 2: None, 3: None, 4: None}
[Finished in 0.1s]
- 04.生成器(generator)
1.这是一个特殊的机制。
2.通过将计算方法”保存下来”,每次不是直接生成的,而是当需要时,通过”保存”的计算方法直接进行计算。
3.创建一个生成器,方法一:将列表生成式的[ ] 变成(),这样就是一个生成器。方法二:使用yield
#方法一
g = (i for i in range(5))
print(g)
#程序执行结果
<generator object <genexpr> at 0x000001E1F7F37228>
[Finished in 0.1s]
#可以看到,它显示这是一个generator,和列表生成式还是有很大区别的,没有办法直接显示出来,需要调用next不断返回或者循环。下面调用
g = (i for i in range(5))
for i in g:
print(i)
0
1
2
3
4
[Finished in 0.1s]
#方法二:
#用一个典型的斐波那契来演示
#生成器
def Fibonacci(count):
a,b,c= 0,1,1
while count:
c=a+b
yield c
a,b=b,c
count-=1
for i in Fibonacci(6):
print(i)
# 程序执行结果
1
2
3
5
8
13
[Finished in 0.1s]
- 05.迭代器
- -
1.可迭代,可迭代是指可以用for循环进行访问,比如list,tuple,dict,str,generator
2.迭代器,可以用next()不断获取下一个值的,则为迭代器,通常是一类惰性计算。所以这类通常可以无限大的数据,而list这种是远远做不到。
#可迭代
from collections import Iterable
print(isinstance([],Iterable))
print(isinstance({},Iterable))
print(isinstance((),Iterable))
print(isinstance('abc',Iterable))
#迭代器
from collections import Iterator
print(isinstance([],Iterator))
print(isinstance({},Iterator))
print(isinstance((),Iterator))
#程序执行结果
True
True
True
True
False
False
False
#可以用iter()变成迭代器
from collections import Iterator
print(isinstance(iter(()),Iterator))
#程序执行结果
True
[Finished in 0.1s]
如有错误,可以私信我,这里表示感谢