ファイル操作
リードオンリー
使用してオープン()、ファイルを開くためにファイルハンドルを取得し、ファイルハンドルにより操作することができます
異なる動作を実行することができるであろう対応する差分を開き
ファイルを開きます:
R、R、W +、+、+ Rbを、WB、AB W
R読み取り専用の動作モードは、読み出しのみ可能
f=open('文件名称',mode='操作方式',encoding='编码类型')
f.read() 读取
f.close() 关闭文件
f.readline()读行
f.redlines()逐行读取
最初のパラメータに開いた第2のパラメータを開くために、ファイルの名前は、このファイルに対して実行する操作の種類であるが、第三パラメータがまとめたファイルのエンコーディングを開くためにあなたに言ったコンテンツを購入するために使用されます。
fは、オペレータファイル、文書またはその他のオブジェクトの操作は、オペレーティングシステムがOpen関数呼び出しのpythonで、WindowsのデフォルトエンコーディングはGBK、LinuxのデフォルトエンコーディングがUTF-8であるので、ファイルされ、ファイルハンドルと呼ばれ、任意の変数に書き込むことができますどのようなエンコーディングは+、+は、+、RB、WB、ABおよびその他のデフォルトwは書き込みません、R、wは、どのような方法、モードが開放されている、一般的なRにオープンし、プロセスがファイルを開くためにrとされ、保存され、生成ファイルハンドル、操作に対応したファイルハンドルは、ファイルを閉じます。
RBモード:読み取り専用バイト
F =( 'ファイル名'、モード=「RB)#注RB、WBオープン、ABは、モードをコード書き込むことができません
S = f.read()
プリント(S)
結果として得られたバイトは、バイト型です
RB役割:このデータを直接書き出す方法はありませんので、あなたはRBを使用する必要があります、そのような画像を読み取る、MP3やビデオなど、時間のテキストドキュメントを読みます
それらの輸送および保管のために。
相対および絶対パス
相対パス:であること、同じフォルダに、ファイル名を直接書き込むことができ、同じレベルを見つけるために
絶対パス:コンピュータディスク上のファイルを見つけるためのパス、その後の同等はどこかに行くためにどこにあるかわからない、ファイル名を検索してきました
エスケープ
時には、あなたがパスを入力するとき
C:\user\ner #这个\n会成为换行符,防止被转义就需要
#两种方法可以防止转义
1.C:\\user\\ner #双斜杠
2.r'C:\user\ner #前面加r
カバーワットを書きます
終了したら、ファイルを書き込むには良い習慣は(フラッシュリフレッシュ形成することになります)
F =オープン( "文件"、モード= 'W'、エンコード= 'UTF-8')
f.write( "内容")
f.flush()
f.close()
Wモードを使用する場合、ファイルは空にしてから書き込むファイルを開きます。書き込みの時間をカバーするには、ファイルが空のファイルで開くことに注意してください、
W読み出し動作を行うことができません
WBモードでは、ファイルを編集するには、開くことができませんが、ファイルを書き込むための時間は、データはUTF-8のバイトの文字列に変換する必要があります
F =オープン(「ファイル」は、モード=「WB」)の注目は、エンコーディングを記述してはなりません
MSG = 'こんにちは' .encode(UTF-8)
f.write(MSG)
f.flush()#リフレッシュ
f.close()
追加a,ab,a+
ファイルの末尾に追加され、カーソルの位置に関係なく、追加
ファイルが存在しない場合、Wモードでは、新しいファイルを作成します
F =オープン( '内容'、モード= 'A'、エンコード= 'UTF-8')
MSG = f.write( "この糖化後")
書き込みモードのR +
読み取りと書き込みの名前が示唆する、それを終えたときに、デフォルトのカーソルは、前面にあるため、カーソルが最後に読み出され、書き込みの前に読んで、その後、書き込みしなければなりません
R +モード
f=open("文件名称",mode='r+',encoding='utf-8')
s=f.read()
f.write("针棒")
f.flush()
f.close()
print(s)
#正常的读取,写在结尾
R +ピットパターン
書き込み動作が実行された後、読み取り内容であればどんなに多く、カーソルが表示されているどのくらい、その後、ライト動作時にファイルや操作の最後にあります。
読み書きモードのW +
F =オープン( "ファイル名"、MODE = W '+'、エンコード= 'UTF-8')
まず、内容を空にして、書かれた、そして読みますが、内容が空で読み取るために、使用されていません
f=open("文件名",mode='w+',encoding='utf-8')
f.write("xiaogui")
s=f.read()
f.flush()
f.close()
print(s)
读取不到内容,和覆盖写一样,都会清空再写内容
追加の読み取りA +
f=open("文件名",mode='a+',encoding='utf-8')
f.write('内容')
f.flush()
s=f.read()
f.close()
print(s)
a+模式下,无论是先读还是后读都是读不到数据的
その他の操作
シーク()は、3つのすべての中国部UTF-8の倍数場合ならば、移動ユニットは、バイトバイトであり、カーソル移動の位置であります
通常、手を振って、最後の先頭に移動しようとしています
先頭に移動(0,0)を求めます
シーク(0,2)に移動します
現在の位置に移動させる(0,1)を求めます
単語を移動:(3)カーソルをバイト単位で移動させて移動させるシーク
f = open("小娃娃", mode="r+", encoding="utf-8")
f.seek(0,0)将光标移动到开头
s=f.read() 读取内容,此时光标读取完以后移动到结尾
print(s)
f.seek(0) 再次移动到开头
f.seek(0,2) 移动光标到结尾
s1=f.read() 因为光标移动到结尾 所以什么也没读取到
print(s1)
f.seek(0) 将光标移动到开头
f.write("战鼓啊")写入信息,现在光标在9 因为中文的utf-8编码一个中文三字节,3*3=9
f.flush()
f.close()
f.tell() 查看光标位置
カーソルの位置を見る伝えます:
f = open("小娃娃", mode="r+", encoding="utf-8")
f.seek(0)移动光标到开头
s=f.read() 读取内容,光标移动到结尾
print(s)
f.seek(0) 开头
f.write("美滋滋") 三个字 9个字节
f.tell() 查看光标位置 9
ファイルを変更します。
ファイルの変更は、ファイルの内容だけがメモリに読み込まれている修正が完了した後に、古いファイルに、新しいファイル名の名前をソースファイル情報を削除します
- 過誤動作、ライン全体の内容が読み取られると、メモリのオーバーフロー
import os
with open("../path1/小娃娃", mode="r", encoding="utf-8") as f1,\ #读
open("../path1/小娃娃_new", mode="w", encoding="UTF-8") as f2: #写
s=f1.read()
new_s=s.replace("冰糖葫芦","大白梨")
f2.write(new_s)
os.remove('文件路径') #删除原文件
os.remove("新文件笔记","旧文件名") #重命名新文件
- ソリューション:ラインと操作で読みライン
import os
with open("../path1/小娃娃", mode="r", encoding="utf-8") as f1,\ #旧 读
open("../path1/小娃娃_new", mode="w", encoding="UTF-8") as f2: #新 改
for line in f1:
new_line=line.replace("大白梨","冰糖葫芦")
f2.write(new_line)
os.remove("小娃娃") #删除源文件
os.remove("新文件","源文件") #重命名新文件
- ラインf.readlineを読む()行の折り返しを読むために
- 印刷(f.readline().stripは())改行を削除するために、複数の行を読んで
- プリント(f.readslines())がリストに格納され、ライン毎に読み出されます
- ラインの取得サイクルによってラインのために使用します
初期関数
機能
用函数来实现len
s=[1,2,3,4,5]
count=0
for i in s:
count+=1
print(count)
図1は、関数の定義:再利用可能な、特定の機能コードセグメントを一緒に達成するための組織
2、関数の構文:
DEF関数名(パラメータ):
関数ボディ
戻り
、関数名はそれほど規則が必要と命名、可変2.1であります変数の命名規則に従ってください
図3に示すように、関数呼び出し
関数名()
4、関数の戻り値
戻り、空であってもよい、なし、呼び出し元にタプル戻るの単語の単一、複数
5、関数のパラメータ:
コール型宣言機能変数が定義された基準
1、位置パラメータ
2、デフォルトパラメータ
関数呼び出しを引数に呼び出される関数に渡された
1は、位置パラメータは、
あなたにも数渡さなければなりません呼び出すときに、どのように多くの定義
2、キーワード引数
3、混合パラメータを
関数の呼び出し
括弧内に記述された関数名は、関数の本体が実行される関数を呼び出すことができ、括弧内の関数名
def len():
s=[1,2,3,4,5]
count=0
for i in s:
count+=1
print(count)
len() #函数的调用
関数の戻り値
def func():
print("1")
func()
func()
func() #多次调用
この機能は、複数回呼び出すことができます
戻り値関数の戻り値
def func():
print(1)
return
func()
return 吧这个结果返回给了调用者 因为return后面没有跟东西 所以默认返回None,并且return以后后续代码不再执行,函数的返回值有多个结果的时候就是返回一个元祖,调用者也可以通过解构获得多个变量,返回给函数的调用者,没有return也是默认返回None
要約復帰
- 体験リターン、この関数の最後、リターンコードが実行されません
- デフォルトでは、戻り値の複数の後ろに、戻りNoneを返すために、フォームのタプルであります
キーワード引数の前に必要な場所パラメータ
関数のパラメータ
参数是函数括号里的内容,函数在调用的时候回指定一个具体的变量的值,就是参数 def 函数名(参数): 函数体 def func(chat): #形参 print('打开+chat') func(chat) #实参 在调用的时候给chat一个值再执行函数体
実際のパラメータの2種類
- クロス関数宣言パラメータの位置に書き込まれたパラメータ、関数はXXXを必要とすることを示す、フォームに記入
- 引数:関数の値を転送する関数を呼び出す際に、情報の伝達関数に実際の実行中に、機能XXXに発現された場合、引数が続き、書きます
- パラメータ渡し:質量参加と呼ばれるプロセスで話すように関数値を定義されたコール機能から
3.分類パラメータ
def func(a,b,c=1): #形参 a,b是关键字参数,c是默认参数 排序就是位置>关键字>默认 prin(a) print(b) print(c) #形参就是变量名 实参就是指 传参就是把值赋值给形参 func(a=2,b=3) #实参
def func(a,b): print(a+b) s=func(1,2) print(s)
- 概要パラメータ:位置パラメータ、キーワードのパラメータは、位置パラメータパラメータはキーワード引数の前に混合されなければなりません
- 位置割り当てに応じて、位置パラメータ、
- キーワードでパラメータを見つけるためのキーワード引数、
- デフォルトパラメータ:パラメータのデフォルト値は、一般的に使用されるデフォルト値を持って、デフォルト値に次の引数パラメータの割り当てであれば、それは、引数の割り当てられた値に変更されます
本質的にwhileループのために、
s=[1,2,3,4,5]
n=s.__iter__() #迭代器
while True:
try:
print(n.__next__())
except StopIteration:
break
動的パラメータ、名前空間、ネストされた関数
関数の動的パラメータ
- * Argsのは、位置の汎用関数である可変引数の複数の任意で受信することができ、プログラムの引数は、*パラメータによって示される位置に「*」重合と呼ばれると一体化定義関数をAPE任意のパラメータをとり、動的位置パラメータの後ろに配置されたデフォルトのパラメータ値、これは、パラメータのデフォルト値を上書きしません。
- 順序があります
- 配列位置:位置パラメータ>動的な位置パラメータ>
- デフ曲(* argsが)内は* \重合と呼ばれ、得られた重合結果はタプルです
- プリント(A、B、*引数)これは、個々の要素を取得することができる破る、休憩内部の戦いと呼ばれています。
- 動的パラメータを受信した場合注:後で動的パラメータでパラメータを配置する必要があります
- 注文パラメータ:位置パラメータ>動的パラメータ>デフォルトパラメータ
辞書を得た。3. ** kwargsからは受け入れキーワード引数の辞書です* kwargsからこの辞書のキー** kwargsからユニバーサル質量参加を取ることができ、この星(dynamicキーワードパラメータ)
優先順位のパラメータ:場所パラメータ>動的な位置パラメータ引数>デフォルトのパラメータ>動的なキーワード引数をkwargsから
- ユニバーサルパラメータの受け渡し:ダイナミック位置パラメータ、動的なキーワード引数
- デフ曲(* argsを、** kwargsから):
- 位置パラメータ>動的な位置パラメータ
メモ機能
def func(a,b):
'''
逻辑判断...
:param a:str
:param b:int
return:bool
'''
print(a,b)
def func(user,password):
'''
密码加密
:param user:用户名 str
:param password:密码 str
:return:加密的密码 MDS
'''
print(user,password)
print(func.__doc__)
print(func2.__doc__)
print(func.__name__)
名前空間
print(b)
a=10
def func():
b=20
print(b)
内置空间:print input len 这是python自带的内置空间
全局空间:当前py文件需要开辟的孔家存放在全局空间
局部空间:函数中开辟的空间都是局部空间
加载顺序:
内置空间>全局空间>局部空间
取值顺序:
局部空间>全局空间>内置空间(还找不到就会犯错)
作用域:
全局作用域:内置空间+全局空间
局部作用域:局部空间
ネストされた関数
def song():
print(1)
def fan():
print(2)
return fan()
song()
1,2
____________________
def song():
a=1
def jia():
b=2
print(b)
print(a)
def fan():
pring(b)
return fan()
return jia
song()
2 1 2
____________
def func():
a=1
foo()
pring(a)
def foo():
b=2
print(b)
func()
def a():
a=1
c=()
print(c)
def b():
b=2
print(b)
def c():
c=3
print(a)
def run():
a()
run()
____________________
def func():
a=1
def b():
print(a)
def foo():
b=1
def z():
print(func)
print(b)
ret=z()
func()
return ret
def run():
foo()
print(run())
func 的内存地址 1 还有None
________________________
def func(a):
foo(a)
def foo(e):
b(e)
def b(c):
print(c)
func(15)
15
______________________
a=10
def func():
a=10+1
print(a)
func()
11 别被迷惑
________________
def f1():
a=10
print(a)
def f2():
a=15
print(a)
def f3():
global a
a += 1
print(a)
print(a)
f3()
print(a)
f2()
print(a)
f1()
10 15 11 15 10 10
__________________
a=10
def f1():
a=10
def f2():
a=15
def f3():
global a
a += 1
print(a)
print(a)
f3()
print(a)
f2()
print(a)
f1()
10 10 15 11
—————————————————————
a=100
def func():
global a
a=28
print(a)
func()
print(a)
100 28
____________
a=10
def func1():
a=20
def func2():
nonlocal a
a=30
print(a)
func2()
print(a)
func1()
30 30
___________________
a=1
def fun_1():
a=2
def fun_2():
nonlocal a
a=3
def fun_3():
a=4
print(a)
print(a)
fun_3
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a)
1 2 3 3 3 1
#注意看这个没有被调用的函数
_______________________
非ローカルグローバル
グローバル:変数の値に対応するグローバル空間を変更します
非ローカル:彼に最も近い前の層への唯一の変更、グローバル空間を伴わない、ローカル変数の値に宇宙空間に関数を変更し、最新のものはどこ最も外側の関数を見つけるために知って、上がるしていきませんでした
三項演算子
三項演算子:変数条件が決意の条件を満たさない条件結果結果で満足しています
return a if a>b else b
a = 10
b = 20
c = a if a> b else b
变量名 = 条件成立的结果 条件 条件不成立的结果
列挙を列挙
自動ソート
列挙する:(このようなリストとして、列)(反復処理可能)オブジェクトの列挙を指標値を用いて、同時に得ることができる列挙シーケンスインデックス、から構成されているトラバース反復/、。
(反復可能オブジェクトは、1)数のカウントから決定列挙する
li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
print(i)
(1, 'alex')
(2, '引脚')
(3, '女神')
(4, '太白')
for index,name in enumerate(li,1):
print(index,name)
1 alex
2 引脚
3 女神
4 太白
for index, name in enumerate(li, 100): # 起始位置默认是0,可更改
print(index, name)
100 alex
101 引脚
102 女神
103 太白
再帰イテレータをフォーマットする関数fのオブジェクト名を使用して第一級、
関数名とファーストクラスのオブジェクトの使用
ファーストクラスは、特殊オブジェクト:
これは、変数に割り当てられた値として使用することができます
def func():
print("呵呵")
print(func)
a=func
a() #函数调用 func()
a=func 那么 a+()就可以调用这个函数,吧这个函数赋值给一个变量,
コンテナに格納された要素として
def func():
print(func)
func()
lst=[func,func,func]
print(lst)
这个列表的每一个元素都是函数func里面的内存地址
関数名は、関数のパラメータとして使用することができます
def func():
print(1)
def func1(fn):
print(2)
fn() #执行传递过来的fn
print("666")
func1(func) #吧函数func当成参数传递给func1的参数fn
これは、関数の戻り値として使用することができます
def func():
print(1)
def fun():
print("看我")
return fun
fun=func()
fun()
1, 看我
Fフォーマット
F-ストリングは、フォーマットされた出力フォーマットの前に新しい書き込みpython3.6フォーマットされた出力、%s以上の先頭に追加され、より簡略化されました
結果は、F / F + STR形、文字の位置は{}交換のプレースホルダ、および同様のフォーマットで置換されることが望ましいが、これは直接的に同定することができます
name=1
age=2
s=f'姓名:{name},性别:{age}'
print(s)
可以加任意表达式
print(f'{2*3}') #6 直接运算结果
name='song'
print(f'全部大写:{name.upper()}') SONG
字典也可以
teacher={'song':'jiafan'}
print(d"the teacher is {teacher['name']}) #大括号里查询字典键就可以导员元素
列表
lst=['song','jiafan']
s=f'姓名:{lst[0]},年龄:{lst[1]}
print(s)
也可以插入表达式
def func(a,b):
return a+b
a=1
b=2
print(f'和+{func(a+b)}')
多行F
name='1'
age=2
sex=1
print(f'姓名{name}\
性别{sex}\
年龄{age}')
その他の詳細
2つのブレースを印刷する印刷(F「{{{gは}}}」)は、括弧内の4つの括弧が2つの記号を表示することはできませんということである:{} ;!
イテレータ
反復可能オブジェクトが定義されて:多くの民間の方法がありますが、サポート__iter __()メソッドは、反復可能です
イテレータ:サポート__iter __()メソッドイテレータと__next __()のメソッド
- 最終的にどの方法のどのを決定する)(DIRを介しているソースの方法を見ている対象物の内部を見ます
s=123
print(dir(s))
dir会返回一个列表,这个列表含有该对象的整型的所有方法名我们就可以判断是不是可迭代对象了
print('__iter__()'in dir(s)) False 不支持
反復オブジェクトが利点であり得る:視覚的データを表示することができ、
短所:総メモリは、キー以外の値ではなく反復、インデックスアウトを、イテラブル
ループの値は、繰り返し可能な小型変換の下で行われ、反復はイテレータオブジェクトに変換されます
イテレータ
定義イテレータ:Pythonで**、及び内部含む__iter__メソッドはメソッド__next__イテレータとオブジェクト。**
反復可能オブジェクトファイルハンドルでイテレータ、ある次のITER方法及び判定方法によって判断することができ、リストのタプル辞書のSTRセットのイテレータ残りでイテレート可能オブジェクトです
反復どのようにオブジェクトがイテレータに変換することができます
lst=[1,2,3,4,5] s=lst.__iter__() s=iter(lst) print(s)
イテレータ値:反復可能で(インデックスのうち、スライシングとキー)の反復値となっていませんが、彼はの__nextの__()の値を使用していることをイテレータに変換することができます。
lst=[1,2,3,4] s=lst.__iter__() print(s) #内存地址 s1=s.__next__() print(s1) #迭代器取得是值 s1=s.__next__() print(s1) 迭代器是通过next取值的一个next取对应的一个值,如果迭代器里面的值取完了还有next那就StopIteration报错
ループシミュレーションのための内部機構ながら、
オブジェクトのための環状の目的は、反復的である必要があり、それがループの内部機構であるので、オブジェクトが反復値とすることができることを意図していない。その後、次の値と、イテラブルイテレータに変換するために、例外処理を呼び出すとStopIterationの最後に使用例外がスローされます
s=[1,2,3,4,5] s1=s.__iter__() #将可迭代对象转化成迭代器 while True: 利用while循环,next进行取值 try: 利用异常处理终止循环 print(s1.__next__()) except StopIteration: break
イテレータ利点:リリースは、エントリ値のそれぞれに現在のデータをロードするため、省メモリ、データ空間の唯一の等価メモリ責任でイテレータは、データがメモリになります
不活性メカニズム:次の時間は、あまりない値の値を取ります
イテレータ短所:
品質データは、チューブの内部を見ることができません
値が唯一のダウン値があり、後戻りされていません
反復同等のオブジェクトとイテレータ
このよう何CRUD、より直感的な、しかし、メモリを取るが、そのようなデータセットの直接ループ反復値できないなど柔軟な運用、より多くのプライベートメソッドを、イテラブル
アプリケーション:あなたは、データ処理のための柔軟性、および十分なメモリ空間に焦点を当てた場合は、データセットが明確な選択肢である繰り返しオブジェクトに設定されています
反復子:メモリは非常に経済的で、位置の値を記録することができ、値を直接ループ方式のための次の添加が、比較データの単一のセットを操作しない直感的な方法であってもよいです
アプリケーション:スペースがタイトであるときに、データが大きすぎる場合、あなたのメモリは、データセットをイテレータは良い選択で設定されています、
再帰:2つの条件が満たされています
- 自身が自分自身を呼び出します
- 明確な終了条件があります。
発電機、導出、組み込み関数
1.ジェネレータ
Pythonのジェネレータを作成するための3つの方法があります
- ファンクション・ジェネレータにより、
- 派生ジェネレータによって
- Pythonモジュールまたは組み込み関数、Pythonのジェネレータ機能を提供します
- 収量は、発電機へのリターンです
def func():
print(111)
yield "222"
g=func() #这个时候函数不会执行,而是获取到生成器
print(g.__next__()) #这个时候函数才会执行
#并且yield会将func生产出来的数据222给了g.__next__()
结果
111
222
リターンと歩留まりが返されます
収量は、実行位置を記録します
戻り値は、より多くを書くことができますが、一度だけ、関数が終了することができ、かつ、呼び出し元の関数の戻り値の知識へ
収量は複数のレコードに実行場所を書くことができ、あなたはまた、次の該当するコンテンツを与えるであろう、機能を終了していない、何度も返すことができます
def func(): yield "hehe" yield "hehe" yield "hehe" g=func() ret=g.__next__() print(ret) ret1=g.__next__() print(ret1) ret2=g.__next__() print(ret2) #必须一一对应 要不会报错 一个yield对应一个next
5.yieldが一時的関数内whileループのために中断することができます
6.next(次推奨両方次の()python2のみnext()メソッドで()== __次__()ITER()== __ ITER __()python2とのpython3)
()メソッド(理解する)を送ります
送信と次の違い
同じ点:(送信と次)ジェネレータが一度下方対応を得ることができるように、生成された降伏値を取得することができます
異なる:降伏取得した第1の値は、次の送信と降伏値が値に渡すことができる((なし)送ることができる)を送るだけで使用されていません
からの収量
python3であるデータオブジェクトが結果ジェネレータとして返され、各直接反復を提供
1つのリターンによって歩留まり反復可能な要素の1
def func():
lst=[1,2,3,4,5]
yield lst
g=func()
print(g) #返回func内存地址
print(next(g)) #只是返回一个列表
def func():
lst=[1,2,5,3,4]
yield from lst
g=func()
print(g) #内存地址
print(next(g))# 返回的是一个列表的元素 多了也会报错
def func():
lst=[1,2,3,4,5]
lst1=[9,8,7,6,5]
yield from lst1 #先执行这个lst1列表的元素
yield from lst #挨个返回后再执行lst的元素
g=func()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
2.派生
- リスト内包
向列表中添加1~10
print([i for i in range(10)])
简洁 推导这个从0-9十个数的打印
lst=[]
for i in range(10):
lst.append(i)
print(lst)
リスト内包は、2つのモードに分かれて:
- 循環モード:[反復可能で変数の変数(プロセス変数)]
- フィルタモード:[反復可能な条件であればにおける変数の変数(プロセス変数)]
3.サイクルモード
lst=[i*i for i in range(10) ] 十以内数字的所有整数平方 这个i*i就是加工的变量 lst=[f'python{i}期'for i in range(10)] print(lst) 从python0期到python9期 f'python{i}期'就是加工的变量
3.フィルタモード
フィルタリングモードは、上記の決意に基づいて、条件を追加し、その後、条件がリストに追加され
把lst=[1,2,3,4,5,6,7,8]这个列表中的大于三的留下来 lst=[1,2,3,4,5,6,7,8] print([i for i in lst if i>3]) 把列表元素长度小于三的筛选掉 把剩下的全部大写 l = ['wusir', 'laonanhai', 'aa', 'b', 'taibai'] print([i.upper() for i in l if len(i)>3])
找到嵌套列表中名字含有两个‘e’的所有名字(有难度) names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] print([name for lst in names for name in lst if name.count('e') >= 2]) # 注意遍历顺序,这是实现的关键
4.ジェネレータ式
ライン上)全く同じ式を導いたが、[](と式のリストおよび文法を生成します
比如八十以内的所有丨的平方放到一个生成器表达式中 s=(i**2 for i in range(10)) print(s) 得到是内存地址 #生成器表达式也可以进行筛选 获取1-100能被三整除的数 s=(i for i in range(100) if i%3==0) for i in s: print(i)
そして、判別式を導出式のリストを生成します:
- データがメモリにロードされたすべての時間を消費し、リスト内包メモリ。要素バイを生成し、イテレータプロトコルを生成し、式に従います
- 得られた値は、派生型のリストは、リストジェネレータ発現が発生することにより得られる得られる、異なります。
- リストの内包表記は、知識のジェネレータ式メモリアドレスを一目します。
不活性メカニズムジェネレータ:訪問の時の値は、ちょうどあなたの価値与えるように頼んだ場合にのみ、発電機、実行されませんしないでください
辞書派生:
lst=[1,2,3] lst1=["nihao","hello","hey"] dic={lst[i]:lst[i] for i in range(len(lst))} print(dic)
導出のセットと、特徴の非順序集合の集合を生成するには、導出量と結婚するように自然繰り返しません
print({i for i in [-13,-13,2,2,3] })
3.組み込み関数
s = """for i in range(10): print(i)"""s1 = """def func(): print(123)func()"""print(eval(s))print(exec(s1)) # 牛逼 不能用print(hash("asdfas"))print(help(list))help(dict)def func(): passprint(callable(func)) # 查看是否可调用print(float(2)) # 浮点数print(complex(56)) # 复数print(oct(15)) # 八进制print(hex(15)) # 十六进制print(divmod(5,2)) # (2, 1) 2商 1余print(round(5.3234,2)) # 四舍五入 -- 默认是整数,可以指定保留小数位print(pow(2,3)) # 幂print(pow(2,3,4)) # 幂,余s = "alex"print(bytes(s,encoding="utf-8"))print(ord("你")) # 当前编码print(chr(20320))s = "C:\u3000"print(repr(s))print("\u3000你好")lst = [1,2,3,False,4,5,6,7]print(all(lst)) # 判断元素是否都为真 相似andprint(any(lst)) # 判断元素是否有真 相似orname = 1def func(): a = 123 # print(locals()) # print(globals())func()print(globals()) # 全局空间中的变量print(locals()) # 查看当前空间的变量
これらは、一般的に組み込み関数を使用していない、あなたは理解することができます