'''
#可迭代對象: 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,看着高大上.
缺點:
,很差排錯.
總體:
凡是用列表推導式構造的列表對象,用其餘方式均可構建.,很是複雜的列表,列表推導式是構建不出的,
列表推導式比較有魔性.
構建一個列表:
['技師0號','技師1號'... '技師15號']
print(['技師%s號' % i for i in range(16)])
['護士1號', '護士3號','護士5號', ...,'護士13號']
print(['護士%s號' % i for i in range(1, 14, 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代碼構建的,這樣就知足了個性化需求,知足之後你工做中須要.
def func():
print(111)
yield 222
def func2():
print(333)
yield 333
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)
目前學過的內置函數都有什麼樣的呢
'''
print()
input()
range()
len()
max()
min()
open()
type()
int()
str()
list()
dict()
set()
dir()
tuple()
bool()
id()
iter()
next()
isinstance()
'''
上面這些大概就是目前咱們以前學過的內置函數了
內置函數什麼意思呢?
內置函數: 一些經常使用的功能,python都給你封裝好了,供你直接使用.
##內置函數: 一些經常使用的功能,python都給你封裝好了,供你直接使用1.1做用域相關#locals: 函數會以字典的類型返回當前位置的所有局部變量.# globals: 函數以字典的類型返回所有全局變量#例子示範:a = 1b = 2print(locals())print(globals())#這兩個同樣,由於是全局執行的##################################################def func (argv): c = 2 print(locals()) print(globals())func(3)#這兩個不同##其餘相關#字符串類型代碼的執行 eval , exec ,complie# *** eval: 執行字符串類型的代碼,並返回最終結果.print(eval("2+2")) ##4n = 81print(eval("n + 4")) ##85eval('print(666)') ###666## exec :執行字符串類型的代碼.s = """for i in [1,2,3]: print(i)"""exec(s) ###結果是 1 2 3#compile: 將字符串類型的代碼編譯, 代碼對象可以經過exec語句來執行或者eval()進行求值##1.2.2 輸入輸出相關 input ,print# *** 函數接收一個標準輸入數據,返回爲string 類型.# *** print:打印輸出print(1,2,3,sep='|') #設置每一個元素的鏈接符 sep = '|'print(666 ,end=' ') #end = '\n' 默認換行print(555)f1 = open('log',encoding='utf-8',mode='w')print('隨便寫的內容',file=f1)f1.close()#1.2.3 內存相關 hash id# ** hash: 獲取一個對象(可哈希對象:int,str,Bool,tuple)的哈希值print(hash('name'))print(hash(7117817419752622577))print(hash('name1'))print(hash('name2'))print(hash('name3'))print(hash(100))print(hash(1))print(hash(True))# ** id :用於獲取對象的內存地址.l1 = [i for i in range(100) if i % 2 == 1]print(l1)count = 0for i in l1: if i ==51: print(count) count +=1#1.2.3 文件操做相關# open:函數打開一個文件,建立一個file 對象,相關的方法才能夠調用它進行讀寫.# 1.2.4 模塊相關 __import__#__import__ :函數用於動態加載類和函數.#1.2.5幫助#help :函數用於查看函數或者模塊用途的詳細說明print(help(str))#1.2.6 調用相關# ** callable: 函數用於檢查一個對象是不是可調用的. 若是返回True ,object仍然可能調用失敗;但若是返回False,調用對象ojbect 絕對不會成功def func1(): print(111)a = 666print(callable(a))print(callable(func1)) ###檢查函數是否能夠被調用