python 列表推导式和生成式,部分内置函数

可迭代对象: str,list,dict,tuple,set,range

文件句柄:是迭代器

with open('01 今日内容大纲', encoding='utf-8') as f1:
#     f1.read()
#     print('__iter__' in dir(f1))
#     print('__next__' in dir(f1))
# l1 = [1, 2, 3]
# from collections import Iterable
# from collections import Iterator
# print(isinstance(l1,Iterable))
# print(isinstance(l1,Iterator))
# print(isinstance(l1,list))

  列表推导式

l1 = []
# for i in range(1,14):
#     l1.append(i)
# print(l1)
# l1 = []
# for i in range(1,14):
#     l1.append('python%d期' % i)
# print(l1)
# 列表推导式
# l2 = [i for i in range(1, 14)]
# [变量(加工后的变量) for 变量 in iterable] 循环模式
# print(l2)
# l3 = [ 'python%s期' % i for i in range(1, 14)]
# print(l3)

  

优点:
# 1,节省代码,一行搞定.
# 2,看着高大上.
# 缺点:
# ,不好排错.
#整体:
# 凡是用列表推导式构造的列表对象,用其他方式都可构建.,非常复杂的列表,列表推导式是构建不出的,
# 列表推导式比较有魔性.

分类:
# [变量(加工后的变量) for 变量 in iterable] 循环模式
# [变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式

l1 = [i for i in range(1, 31) if i % 3 == 0]
# print(l1)
# 10以内所有数的平方
# print([i*i for i in range(11)])
# 30以内所有能被3整除的数的平方
# print([i**2 for i in range(31) if i % 3 == 0])
# 100 以内所有的奇数.
# print([i for i in range(1,101,2)])
# print([i for i in range(101) if i % 2 == 1])

 生成表达式

l1 = ['python%s期' % i for i in range(1,14)]
# print(l1)
# g_obj = ('python%s期' % i for i in range(1,14)) # 循环模式
# g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 循环模式
# print(g_obj)
# print(g_obj.__next__())
# print(g_obj.__next__())
# print(g_obj.__next__())
# print(g_obj.__next__())
# for i in g_obj1:
#     print(i)

 

生成器:两种方式:
# 生成器函数. yield
# 生成器表达式
# 为什么有生成器:
# 生成器本身是自己用python代码构建的,这样就满足了个性化需求,满足以后你工作中需要

 

 

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
#          ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
# l2 = [name for i in names for name in i if name.count('e') == 2]
# l1 = []
# for i in names:
#     for name in i:
#         if name.count('e') == 2:
#             l1.append(name)
# print(l1)
# print(l2)

  这是字典的

mcase = {'a': 10, 'b': 34}
# print({mcase[i]: i for i in mcase})

  内置函数

1.1作用域相关

globals()永远是全局的.

locals()当前位置的所有变量以及函数名等数据.

def func1():
#     a1 = 2
#     b1 = 3
#     # print(globals())
#     def func2():
#         c = 666
#         print('*****',locals())
#     func2()
#     print(locals())
# func1()
# print(locals())
# print(globals())

1.2其他相关

eval  执行的是字符串,可以执行字符串的内容比如数字的相加和字典

exec  执行的是字符串,可以执行字符串的循环

complie  

print('1 + 3')
# print(eval('1+3'))
# print(eval('3 * 3'))
# dic = eval("{'name': 'alex'}")
# print(dic,type(dic))

  

code = '''
for i in range(1, 11):
    print(i)
'''
# exec(code)
# compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

  

输入相关的操作

input

print 操作较多

input:函数接受一个标准输入数据,返回为 string 类型。

  

print:打印输出。
# print(1,2,3,sep='|') # 设置每个元素的连接符 sep='|'
# print(666,end='')  # end='
' 默认换行
# print(555)
# f1 = open('log', encoding='utf-8', mode='w')
# print('随便写的内容',file=f1)
# f1.close()

 内存相关操作

hash  获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。

rint(hash('name'))
# print(hash(7117817419752622577))
# print(hash('name1'))
# print(hash('name2'))
# print(hash('name3'))
# print(hash(100))

  

id用于获取对象的内存地址。

1.2.3

文件操作相关

open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

1.2.4

模块相关__import__ 
#
# __import__:函数用于动态加载类和函数 。

1.2.5

help 函数用于查看函数或模块用途的详细说明。

1.2.6

callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

def func1():
    print(111)
a = 666
print(callable(a))
print(callable(func1))

  

原文地址:https://www.cnblogs.com/lnrick/p/9203753.html