笔记:python基础之内置函数2

[].reverse():反转
reverse([]):反转的迭代器,能保留原序列

l = [1,2,3,4,5]
l.reverse()
print(l)
l = [1,2,3,4,5]
l2 = reversed(l)
print(l2)
# 保留原列表,返回一个反向的迭代器
#输出:
[5, 4, 3, 2, 1]
<list_reverseiterator object at 0x0000000004F8F518>

slice(,):切片规则

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
print(l[1:5:2])
#输出:
(2, 213)
(2, 213)

format():可进行进制转换,调整格式

print(format('test', '<20'))
print(format('test', '>40'))
print(format('test', '^40'))
#输出:
test                
                                    test
                  test                  

bytes(str,encoding=’’).decode(’’):转换编码方式;
我拿到的是gbk编码的,我想转成utf-8编码

 print(bytes('你好',encoding='GBK'))     # unicode转换成GBK的bytes
 print(bytes('你好',encoding='utf-8'))   # unicode转换成utf-8的bytes
 #输出:
 b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'

网络编程 只能传二进制
照片和视频也是以二进制存储
html网页爬取到的也是编码

b_array = bytearray('你好',encoding='utf-8')#在修改字符串时,可节省空间
print(b_array)
 print(b_array[0])
'\xe4\xbd\xa0\xe5\xa5\xbd'
s1 = 'alexa'
s2 = 'alexb'
b=memoryview('\xe4\xbd\xa0\xe5\xa5\xbd',encoding='utf-8')
 #输出:
 bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
228

切片 —— 字节类型 不占内存
字节 —— 字符串 占内存

l = 'ahfjskjlyhtgeoahwkvnadlnv'
l2 = l[:10]

编码相关的函数

print(ord('好'))#查看字符的编码
print(ord('1'))
print(chr(97))
#输出:
22909
49
a
print(ascii('好'))#如果是ascii的字符就会原封不动打印,如果不是就会打印‘\u……’
print(ascii('1'))
#输出:
'\u597d'
'1'

\r或者repr:保留字符串的单引号

name = 'egg'
print('你好%r'%name)
#输出:
你好'egg'

print(repr('1'))
print(repr(1))
#输出:
'1'
1

可迭代的函数:all/any
all→如列表中有任何的空,都返回False
any→有一个True,就返回True

print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))
#输出:
False
True
False

print(any(['',True,0,[]]))
输出:True

拉链函数:zip→返回一个迭代器

l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):#zip(可为任何数据类型,任意长度)
     print(i)
#输出:
(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')

可迭代函数:filter/map
filter(func,[])→把[]中每个元素传进func,返回True的值(可用于删除None/空字符串)。执行了filter之后的结果集合<=执行之前的个数,filter只管筛选,不会改变原来的值;
map(func,[])→map执行前后元素个数不变,值可能发生改变。

def is_odd(x):
    return(x%2==1)
#相当于[]中的每个元素都传进函数里进行判断,相当于[i for i in [1,3,5,6,7,8] if i%2==1]
for i in filter(is_odd,[1,3,5,6,7,8]):
    print(i)
#输出:
1
3
5
7

from math import sqrt
def find(x):
    re=sqrt(x)
    return(re%1==0)
#开平方为整数的数,如果是整数,会返回float类型,如4.0,4.0%1=0,1.2%1=0.2
for i in filter(find,list(range(100))):#filter执行之后元素个数发生变化,但不会改变原来的值
    print(i)

#输出:
0
1
4
9
16
25
36
49
64
81
def find_num(x):
    re=sqrt(x)
    if re%1==0:
        return(x)
    else:
        pass
for i in map(find_num,list(range(5))):#map执行前后元素个数不变,值可能发生改变
    print(i)
#输出:
 0
1
None
None
4

排序:sorted/[].sort(key=)
sorted→在列表较小时用,因其会产生新的列表,对愿列表无影响,但占内存
lst.sort(key=)→改变原列表,在原列表的基础上进行排序

l = [1,-4,6,5,-10]
l.sort(key = abs)   # 在原列表的基础上进行排序
print(l)→输出:[1, -4, 5, 6, -10]

print(sorted(l,key=abs,reverse=True))      # 生成了一个新列表 不改变原列表 占内存
print(l)
#输出:
[-10, 6, 5, -4, 1]
[1, -4, 5, 6, -10]

l = ['   ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)
#输出:
[[1, 2], '   ', 'hello world']

应用:客户输入一个页码,就输出该页所有的内容,每个页面5行内容

with open('F:/老男孩/分页读取数据.txt') as f:
    line_lst=f.readlines()
    #print(line_lst)
page_num=int(input('请输入页码:'))

pages,mod=divmod(len(line_lst),5)
if mod==0:
    pages=pages
else:
    pages=pages+1#总页码数

index_lst=list(range(0,len(line_lst),5))#分页的内容index
if page_num<pages:
    print(line_lst[index_lst[page_num-1]:index_lst[page_num]])
elif page_num==pages:
    print(line_lst[index_lst[page_num-1]:])
else:
    print('输入页码有误,或者超出了页码范围!')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值