Python基础_高级特性

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]

如有错误,可以私信我,这里表示感谢

猜你喜欢

转载自blog.csdn.net/SkinWhite/article/details/81252592