Python学习之路(七):基础知识之内置函数

1.迭代器相关

  • iter( )获取迭代器
  • next( )获取迭代对象
lst = [‘白蛇传‘, ‘骷髅叹‘, ‘庄周仙游‘]

it = lst.__iter__()
print(it.__next__())
print(it.__next__())
print(it.__next__())

# it = iter(lst)  # 内部封装的就是__iter__
# print(next(it))
# print(next(it))
# print(next(it))  # 内部封装的就是__next__

2.内存相关

  • id( )获取到对象的内存地址
  • hash( )获取到对象的哈希值(int, str, bool, tuple)
lst = [‘白蛇传‘, ‘骷髅叹‘, ‘庄周仙游‘]

print(id(lst))
print(hash(‘123‘))

3.数字相关

print(bin(5))  # 5的2进制  0b 二进制

print(oct(8))  # 0o八进制

print(hex(16))  # 0x十六进制

print(abs(32))  # 绝对值

print(divmod(10, 3))  # 计算商和余数

print(round(3.15))  # 四舍五入

print(pow(2, 4))  # 求次幂

print(sum([1, 3, 4], 6))  # 求和

print(min([1, 3, 4]))  # 求最小值

print(max([1, 3, 4]))  # 求最大值

4.字符串相关

# 反转
lst = [1, 3, 4]
ll = reversed(lst)
print(list(ll))

# 切片
lst = [‘马化腾‘, ‘码云‘, ‘马大帅‘, ‘马超‘]
s = slice(1, 3, 2)  # 从1切到3,每两个出一个
print(lst[s])
print(lst[1:3:2])

s = ‘你好啊,不要睡了,我也困!‘
print(memoryview(s.encode(‘utf-8‘)))  # 函数返回给定参数的内存查看对象

print(ord(‘a‘))  # 查看字母a的编码位置
print(chr(20013))  # 根据编码位置返回相应的字符

print(‘周杰伦说:"昆凌难看"‘)
print("周杰伦说:\"昆凌难看\"")  # \转义
print(repr("周杰伦说:\"昆凌难看\""))  # repr原样输出字符串
print(r"周杰伦说:\"昆凌难看\"")  # 原样输出字符串
print(repr("周杰伦\说"))
# c: \在字符串中是转义字符
# \n 换行
# \t 制表符
# \\ \
# \" ‘
# \‘ ‘
# eval 执行字符串类型的代码

s = "5 + 5"
ret = eval(s)  #动态执行一个代码片段,侧重点在返回上
print(ret)

a = "{‘name‘:‘汪峰‘, ‘age‘: ‘48‘}"
d = eval(a)  # 还原回字典,列表
print(d[‘name‘])


# exec()执行一段代码

s = "a = 10"
exec(s)  # 执行代码
print(a) # pycharm里的报错信息不一定是对的

5.逻辑相关

print(all([True, 1, 1, 1]))  # add的意思
print(any([False, 0, 1]))  # or的意思

6.其他

compile() 编译一段代码

s = "for i in range(10): print(i)"
c = compile(s, "", "exec")
exec(c)


s = "5+9"
c = compile(s, "", "eval")
ret = eval(c)
print(ret)

zip() 打包数据

lst1 = [‘甜蜜蜜‘, ‘往事只能回味‘, ‘难忘今宵‘, ‘枫红的回忆‘, ‘十年‘]
lst2 = [‘邓丽君‘, ‘韩宝仪‘, ‘李谷一‘, ‘王宝强‘]
lst3 = [‘2000‘, ‘3000‘, ‘5‘, ‘120‘]
a = zip(lst1, lst2, lst3)  # 水桶效用,# 十年没有对应位置的数据,略过不做记录
print(‘__iter__‘ in dir(a))  # 可迭代的
for i in a:
    print(i)  # 十年没有对应的数据,略过不做记录

7.sorted

语法:sorted(iterable,key=None,reverse=False)  

iteralbe-->接可迭代对象

key-->指定排序规则

reverse-->是否逆序,默认为False不逆序,逆序时令为True

lst = [1, 3, 2, 5, 4]
lst.sort()  #列表独有的方法
print(lst)

# sorted是通用的方法
"""
lst = [1,3,2,5,4]
lst2 = sorted(lst)
print(lst)    #原列表不会改变
print(lst2)   #返回的新列表是经过排序的
lst3 = sorted(lst,reverse=True)
print(lst3)   #倒叙

"""
dic = {1: ‘a‘, 3: ‘c‘, 2: ‘b‘}
print(sorted(dic))   # 字典排序返回的就是排序后的key

# 和函数组合使用
# 定义一个列表,然后根据一元素的长度排序
lst = [‘天龙八部‘,‘西游记‘,‘红楼梦‘,‘三国演义‘]
# 计算字符串的长度
def func(s):
    return len(s)
print(sorted(lst,key=func))

# 和lambda组合使用
lst = [‘天龙八部‘, ‘西游记‘, ‘红楼梦‘, ‘三国演义‘]
print(sorted(lst, key=lambda s: len(s)))

lst = [{‘id‘: 1, ‘name‘: ‘alex‘, ‘age‘: 18},
    {‘id‘: 2, ‘name‘: ‘wusir‘, ‘age‘:17},
    {‘id‘: 3, ‘name‘: ‘taibai‘, ‘age‘: 16}, ]
# 按照年龄对学生信息进行排序
print(sorted(lst, key=lambda e: e[‘age‘]))

8.filter

语法:ilter(function,iterable)

function-->用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据。

iterable-->可迭代对象。

lst = [‘张无忌‘, ‘张铁林‘, ‘是可信‘]

# 定义一个函数,这个函数在应用filter时传入

def func(el):
    if el[0] == ‘张‘:
        return False
    else:
        return True


f = filter(func, lst)  
print(‘__iter__‘ in dir(f))

for e in f:
    print(e)

9.map

语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function

lst = [1, 3, 4, 5]


def func(el):
    return el ** 2
m = map(func, lst)  # 把后面的可迭代对象中的每一个元素传递给map函数
print(list(m))  # 用list输出可迭代对象

相关推荐