day 7 - 1 集合、copy及基礎數據類型彙總

来源:https://www.cnblogs.com/ysging/archive/2018/11/01/9887246.html
-Advertisement-
Play Games

集合:{},可變的數據類型,他裡面的元素必須是不可變的數據類型,無序,不重覆。(不重要)集合的書寫 set = {'alex','wusir','ritian','egon','barry'} 增 add update 刪 pop remove clear set 查 for 交集 & inters ...


集合:{},可變的數據類型,他裡面的元素必須是不可變的數據類型,無序,不重覆。(不重要)
集合的書寫

set1 = set({1,2,3})
#set2 = {1,2,3,[2,3],{'name':'alex'}}  #錯的
print(set1)
#print(set2)

set = {'alex','wusir','ritian','egon','barry'}

增 add update

set.add("女神")
print(set)

set.add("abc")
print(set)

set.update("abc")
print(set)

刪 pop remove clear set

 

set.pop()  #隨機刪除
print(set.pop())
print(set)

set.remove('alex')  #按元素刪除
print(set)

set.remove('alex2')
print(set)

set.clear()  #清空列表  set()
print(set)

 

查 for

 

for i in set:
    print(i)

 

交集  & intersection

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}

set3 = set1 & set2
print(set3)  # {4, 5}
print(set1.intersection(set2))  # {4, 5}

並集  | union

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7,8}
print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}

反交集 ^ symmetric_difference

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

差集  - difference

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)  # {1, 2, 3}  set1獨有的
print(set2 - set1)
print(set1.difference(set2))  # {1, 2, 3}

子集 < issubset
超集 > issuperset

set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}

print(set1 < set2)
print(set1.issubset(set2))  # 這兩個相同,都是說明set1是set2子集。

print(set2 > set1)
print(set2.issuperset(set1))  # 這兩個相同,都是說明set2是set1超集。

面試題

#去重
li = [1,2,33,33,2,1,4,5,6,6]

set1 = set(li)
print(set1)

li = list(set1)
print(li)

讓集合變為不可變類型   frozenset 凍結

s1 = {1,2,3}
print(s1,type(s1))

#讓集合變為不可變類型   frozenset 凍結
s = frozenset('barry')
print(s,type(s))

#不可變類型只可以查
for i in s:
    print(i)

copy

賦值運算

 

l1 = [1,2,3]
l2 = l1
l1.append('a')
print(l1,l2)

[1, 2, 3, 'a'] [1, 2, 3, 'a']

 

運用 copy 賦值

 

 

l1 = [1,2,3]
l2 = l1.copy()
print(l1,l2)
print(id(l1),id(l2))
l2.append('a')
print(l1,l2)

 

copy 賦值與數組

#第一組
l1 = [1,2,[4,5,6],3]
l2 = l1.copy()  
print(l1,id(l1))
print(l2,id(l2))

#第二組
l1.append('a')
print(l1,l2)

#第三組
l1[2].append('a')
print(l1,l2)
print(id(l1[2]))
print(id(l2[2]))
#第一組
[1, 2, [4, 5, 6], 3] 2371695834312
[1, 2, [4, 5, 6], 3] 2371695834440

#第二組
[1, 2, [4, 5, 6], 3, 'a'] [1, 2, [4, 5, 6], 3]

#第三組
[1, 2, [4, 5, 6, 'a'], 3, 'a'] [1, 2, [4, 5, 6, 'a'], 3]
2371695834184
2371695834184

copy 賦值與數組(2)

l1 = [1,[1],2,3,4]
l2 = l1[:]

#第一組
l1[1].append('a')
#l2 的結果是什麼?
print(l2)

#第二組
print(l1,id(l1))
print(l2,id(l2))
print(l1[1] is l2[1])
#第一組
[1, [1, 'a'], 2, 3, 4]

#第二組
[1, [1], 2, 3, 4] 2179834995912
[1, [1], 2, 3, 4] 2179834996040
True

通過定義 copy 賦值

import copy   #定義 copy
l1 = [1,2,[4,5,6],3]
l2 = copys.deepcopy(l1)

#第一組
print(l1,id(l1))
print(l2,id(l2))

#第二組
l1[2].append('a')
print(l1,l2)
#第一組
[1, 2, [4, 5, 6], 3] 1651493850184
[1, 2, [4, 5, 6], 3] 1651493850696

#第二組
[1, 2, [4, 5, 6, 'a'], 3] [1, 2, [4, 5, 6], 3]

index 與 enumerate 用法

列印序號與值

li = ['alex','taibai','wusir','egon']
for i in li:
    print(li.index(i),i)

for index,i in enumerate(li,1):
    print(index,i)

基礎數據類型彙總

list

列表中元素的刪除過程
當每次列表中有元素被刪除,則列表的原始下標發生變化
range 的值並不會跟隨列表的變化而變化

lis = [11,22,33,44,55]
for i in range(len(lis)):
    print(i)       # i = 0              i = 1               i = 2
    del lis[i]
    print(lis)    #  [11,22,33,44,55]   [22, 44, 55]          [22, 44]
0
[22, 33, 44, 55]
1
[22, 44, 55]
2
[22, 44]
3
Traceback (most recent call last):
  File "E:/py/day7-1.py", line 4, in <module>
    del lis[i]
IndexError: list assignment index out of range

刪除數組中的奇數位

lis = [11,22,33,44,55]

#方法一
lis = lis[::2]
print(lis)

#方法二
l1 = []
for i in lis:
    if lis.index(i) % 2 == 0:
        l1.append(i)
lis = l1
print(lis)

#方法三
for i in range(len(lis)-1,-1,-1):
    if i % 2 == 1:
        print(i)
        del lis[i]
        print(lis)
print(lis)

字典的靈活用法

dic = dict.fromkeys([1,2,3],'春哥')
print(dic)
dic = dict.fromkeys([1,2,3],[])
#dic = dict.fromkeys([1,2,3],['ysg'])
print(dic)  # {1: [], 2: [], 3: []}
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥')
print(dic)

數組的靈活用法

l1 = []
l2 = l1
l3 = l1
l3.append('a')
print(l1,l2,l3)

不列印含有 k 的鍵值對

dic = {'k1':'v1','k2':'v2','a3':'v3'}

#方法一:字典
dic1 = {}
for i in dic:
    if 'k' not in i:
        dic1.setdefault(i,dic[i])
dic = dic1
print(dic)

#方法二:數組
l = []
for i in dic:
    if 'k' in i:
        l.append(i)
for i in l:
    del dic[i]
print(dic)

可以轉化成 bool 值

0 ''  [] () {} set()

元祖:如果元祖裡面只有一個元素且不加逗號,那此元素是什麼類型,該元祖就是什麼類型。

#第一組
tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))

#第二組
tu1 = ([1])
tu2 = ([1],)
print(tu1,type(tu1))
print(tu2,type(tu2))

#元祖的靈活用法
dic = dict.fromkeys([1,2,3,],3)
dic[1] = 4
print(dic)
#第一組
1 <class 'int'>
(1,) <class 'tuple'>

#第二組
[1] <class 'list'>
([1],) <class 'tuple'>

#元祖的靈活用法
{1: 4, 2: 3, 3: 3}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var common = {}; /** * [pageMask ajax統一請求] * @return {[type]} [description] */ common.pageMask = function() { $.ajaxSetup({ beforeSend: function(xhr) ... ...
  • 最近在做項目的時候涉及到將數據分割成小的數組,分佈到各個頁面上。 所以記錄一下。 ...
  • (1)在每個HTML標簽上面都有一個屬性 style,把css和HTML結合在一起 <div style="background-color:red;color:blue;">我是一隻小小鳥</div> (2)使用HTML的一個標簽實現,<style>標簽:寫在head裡面 <style type= ...
  • 常規跨域的方法 常見跨域的方法有: 1. 添加Access Control Allow Origin 2. 後臺伺服器代理 3. Jsonp 1、2兩種方法都是安全可靠的,3是不安全不可靠的 Json的本質 Json本質是 引用並執行外部JavaScript腳本 ,原理是\標簽不受功能變數名稱的限制,通過動 ...
  • HTML兩部分組成 head和body ** 在head裡面的標簽就是頭標簽 ** title標簽:表示在標簽上顯示的內容 ** meta標簽:設置頁面的一些相關內容(用的比較少) <meta name="keywords" content="熊貓,金絲猴,恐龍"/> <meta http-equi ...
  • 代理模式詳解 1 什麼是代理模式? 一句話描述:代理模式是一種使用代理對象來執行目標對象的方法併在代理對象中增強目標對象方法的一種設計模式。 詳細描述: 1、理論基礎-代理模式是設計原則中的“開閉原則(對擴展開放、對修改關閉)”的具體實踐,代理對象代為執行目標對象的方法,併在此基礎上進行相應的擴展。 ...
  • ...
  • 最近在Java技術棧微信公眾號粉絲微信群里看到一張圖,說是剛寫完這段下麵這段代碼就被開除了。 開除的原因是因為沒寫註釋嗎? 顯然不是,休眠的邏輯,大家都懂,不需要寫註釋,你註釋寫休眠 1 天也沒意義啊。。。 這個程式員的思維不是一般的牛啊,獲取下一天的日期,居然要休眠等到下一天再獲取,欲哭無淚。。。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...