導航:首頁 > 凈水問答 > list根據條件過濾數據

list根據條件過濾數據

發布時間:2024-11-19 18:16:12

❶ C#中 list<object> 去除重復的數據 求最簡單的方法!!

//導入linq命名空間, 然後distinct一下就可以了. 關鍵代碼如下:

using System.Linq;

//比如,list實例為list

var obj = list.Distinct();

//或者麻煩點要根據list的欄位內xxx過濾容就是

var obj_1=from p in list select p.xxx distinct();

(1)list根據條件過濾數據擴展閱讀

list()函數與array()類似,只是它可以在一次操作中從一個數組內提取多個值,同時為多個變數賦值。其形式如下:

voidlist(mixed…)

從資料庫或文件中提取信息時,這種構造尤其有用。例如,假如你希望格式化並輸出從一個文本,文件中讀取信息。文件的每一行都包含用戶信息,如姓名、職業和喜愛的顏色,每一項用豎線分隔。典型的一行如下所示:

Nino Sanzi|profesional golfer|green

可以通過一個簡單的循環使用list()來讀取每一行,將各部分數據賦給變數,按照需要格式化並輸出數據。

❷ 【Python知識共建】Python 列表推導式

Python 列表推導式是什麼

列表推導式是 Python 語言特有的一種語法結構,也可以看成是 Python 中一種獨特的數據處理方式, 它在 Python 中用於 轉換 和 過濾 數據。

其語法格式如下所示,其中 [if 條件表達式] 可省略。

[表達式 for 迭代變數 in 可迭代對象 [if 條件表達式]]

注意:學習列表推導式的前提是掌握 Python for 循環。

列表推導式中存在兩個名詞,一個是 列表,另一個是 推導式 ,列表我們很清楚,就是 Python 的一種數據類型, 而推導式只是一個普通的語法定義詞,有的教程里,會將其叫做 解析式,二者是一樣的概念。

列表推導式會返回一個列表,因此它適用於所有需要列表的場景。

怎麼用基礎使用

列表推導式最常見的場景就是優化簡單循環。 for 循環寫法

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)

列表推導式寫法

nn_list = [i*2 for i in my_list]print(nn_list)

是不是對比看就是將 for 循環語句做了變形之後,增加了一個 [],不過需要注意的是,列表推導式最終會將得到的各個結果組成一個新的列表。 再看一下列表推導式語法構成 nn_list = [i*2 for i in my_list] ,for 關鍵字後面就是一個普通的循環,前面的表達式 i*2 其中的 i 就是 for 循環中的變數,也就是說表達式可以用後面 for 循環迭代產生的變數,理解這個內容列表推導式就已經掌握 9 成內容了,剩下的是熟練度的問題。

在將 if 語句包含進代碼中,運行之後,你也能掌握基本技巧,if 語句是一個判斷,其中 i 也是前面循環產生的迭代變數。

nn_list = [i*2 for i in my_list if i>1]print(nn_list)優化兩層 for 循環

這些都是一般技能,列表推導式能支持兩層 for 循環,例如下述代碼:

nn_list = [(x,y) for x in range(3) for y in range(3) ]print(nn_list)

當然如果你想加密(誰都看不懂你的代碼)你的代碼,你可以無限套娃下去,列表推導式並沒有限制循環層數,多層循環就是一層一層的嵌套,你可以展開一個三層的列表推導式,就都明白了

nn_list = [(x,y,z,m) for x in range(3) for y in range(3) for z in range(3) for m in range(3)]print(nn_list)

當然在多層列表推導式裡面,依舊支持 if 語句,並且 if 後面可以用前面所有迭代產生的變數,不過不建議超過 2 成,超過之後會大幅度降低你代碼的可閱讀性。

當然如果你希望你代碼更加難讀,下面的寫法都是正確的。

nn_list = [(x, y, z, m) for x in range(3) if x > 1 for y in range(3) if y > 1 for z in range(3) for m in range(3)]print(nn_list)nn_list = [(x, y, z, m) for x in range(3) for y in range(3) for z in range(3) for m in range(3) if x > 1 and y > 1]print(nn_list)nn_list = [(x, y, z, m) for x in range(3) for y in range(3) for z in range(3) for m in range(3) if x > 1 if y > 1]print(nn_list)

現在你已經對列表推導式有比較直觀的概念了,列表推導式對應的英文是 list comprehension,有的地方寫作列表解析式,基於它最後的結果,它是一種創建列表的語法,並且是很簡潔的語法。

有了兩種不同的寫法,那咱們必須要對比一下效率,經測試小數據范圍影響不大,當循環次數到千萬級時候,出現了一些差異。

import timedef demo1():new_list = []for i in range(10000000):new_list.append(i*2)def demo2():new_list = [i*2 for i in range(10000000)]s_time = time.perf_counter()demo2()e_time = time.perf_counter()print("代碼運行時間:", e_time-s_time)

運行結果:

# for 循環代碼運行時間: 1.3431036140000001# 列表推導式代碼運行時間: 0.9749278849999999

在 Python3 中列表推導式具備局部作用域,表達式內部的變數和賦值只在局部起作用,表達式的上下文里的同名變數還可以被正常引用,局部變數並不會影響到它們。所以其不會有變數泄漏的問題。例如下述代碼:

x = 6my_var = [x*2 for x in range(3)]print(my_var)print(x)

列表推導式還支持嵌套 參考代碼如下,只有想不到,沒有做不到的。

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)0用於轉換數據

可以將可迭代對象(一般是列表)中的數據,批量進行轉換操作,例如將下述列表所有元素翻兩倍。

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)1

代碼如下所示:

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)2

結果可以自行編譯運行。

掌握上述語法的關鍵點是 item ,請重點關注 item 從 my_list 遍歷而來,並且 item*2 尾部與 for 循環存在一個空格。

用於過濾數據

列表表達式,可以將列表中滿足條件表達式的值進行篩選過濾,獲取目標數據。

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)3

掌握上述語法的關鍵是 if ,其餘要點是注意語法編寫結構。

接下來你可以嘗試將上述編程邏輯,修改為 for 循環語法,學習過程中要著重理解以上兩種語法結構可以相互轉換, 當你可以無縫將二者進行轉換時,該技能你就掌握了。

有些人會將列表推導式當做 for 循環的簡化版。

字典推導式

有了列表推導式的概念,字典推導式學起來就非常簡單了,語法格式如下:

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)4

直接看案例即可

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)5

得到的結果如下:

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)6

此時需要注意的是字典中不能出現同名的 key,第二次出現就把第一個值覆蓋掉了,所以得到的 value 都是 1。

最常見的哪裡還是下述的代碼,遍歷一個具有鍵值關系的可迭代對象。

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)7元組推導式與集合推導式

其實你應該能猜到,在 Python 中是具備這兩種推導式的,而且語法相信你已經掌握了。不過語法雖然差不多,但是元組推導式運行結果卻不同,具體如下。

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)8

運行之後產生的結果:

my_list = [1,2,3]new_list = []for i in my_list:new_list.append(i*2)print(new_list)9

使用元組推導式生成的結果並不是一個元組,而是一個生成器對象,需要特別注意下,這種寫法在有的地方會把它叫做生成器語法,不叫做元組推導式。

集合推導式也有一個需要注意的地方,先看代碼:

nn_list = [i*2 for i in my_list]print(nn_list)0

因為集合是無序且不重復的,所以會自動去掉重復的元素,並且每次運行顯示的順序不一樣,使用的時候很容易暈掉。

提高場景

再次查看推導式語法結構中,涉及了一個關鍵字,叫做 可迭代對象,因為我們可以把自己目前掌握的所有可迭代對象, 都進行一下嘗試,例如使用 range() 函數。

nn_list = [i*2 for i in my_list]print(nn_list)1

檢驗是否掌握,可以回答下述兩個問題。

如果可迭代對象是一個字典,你該如何操作?

如果可迭代對象位置使用了 enumerate() 函數,你該如何操作?

除了可迭代對象部分可以擴展知識點, if 表達式 中的 條件表達式 也支持各種布爾運算,如果用中文進行翻譯, 表示把滿足條件的元素,放置到新的列表中。

擴展知識

由於列表推導式涉及了數據類型,所以可大膽推斷,還存在其它推導式語法,Python 也確實是這樣設計的。

你可以繼續學習下述內容,而且知識結構基本一致。

字典推導式

集合推導式

生成器推導式

列表推導式的學習,不要過於在意細節,也無需要求學會即掌握,因為該知識點屬於語法糖(編程小技巧), 所以在初學階段,了解即可,隨著編程學習的深入,你會自然而然的將可用推導式的地方,修改為推導式。

原文:https://juejin.cn/post/7101477530615414797
閱讀全文

與list根據條件過濾數據相關的資料

熱點內容
蒸餾法測乙醇加水為什麼 瀏覽:779
凈水器為什麼要用飲水機燒水 瀏覽:295
大魚缸水垢怎麼清理 瀏覽:703
有樹脂腔的中葯 瀏覽:696
什麼情況下原生質層相當於半透膜 瀏覽:815
跑步軌跡過濾演算法 瀏覽:572
學生用飲水機用什麼消毒 瀏覽:83
水處理工業臭氧機 瀏覽:289
過濾嘴掉色怎麼回事 瀏覽:800
碟管式反滲透DTRO膜原理 瀏覽:799
不用換濾芯的水凈化器怎麼用 瀏覽:184
重慶廢水處理 瀏覽:745
凈水器orp標準是多少 瀏覽:436
小米空氣凈化器不能開機怎麼辦 瀏覽:716
配電箱污水泵不啟動怎麼回事 瀏覽:258
酸性染料廢水治理多少錢 瀏覽:389
眼鏡板材和樹脂哪個輕 瀏覽:618
污水治理行業工作總結 瀏覽:581
污水管頂管施工方案6 瀏覽:523
離子樹脂D467Na離子型 瀏覽:347