日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的列表和元组

發布時間:2024/9/3 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的列表和元组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、序列

成員有序排列的,且可以通過下標偏移量訪問到它的一個或者幾個成員,這類類型統稱為序列。
序列數據類型包括:字符串,列表,和元組類型。
特點: 都支持下面的特性

  • 索引與切片操作符
  • 成員關系操作符(in , not in)
  • 連接操作符(+) & 重復操作符(*)

二、列表

1.列表的創建

數組: 存儲同一種數據類型的集和。scores=[12,95.5]
列表(打了激素的數組): 可以存儲任意數據類型的集和。

就是使用中括號[]包含的

創建一個空列表 li = [] print(type(li))


創建一個包含元素的列表,元素可以是任意類型,
包括數值類型,列表,字符串等均可, 也可以嵌套列表。

list = [1,10,9] print(type(list)) list1 = [1,10,['hello','world']] print(type(list1))

2.列表的基本特性

1).連接操作符和重復操作符

print([1,2] + [2,3]) print([1,2] *3)

2).成員操作符(in, not in)

## 2.成員操作符(in, not in) print(1 in [1,2,3]) print(1 in ["a",False, [1,2]])


注意 第二種是列表嵌套列表形式,in詢問只是當前列表。

3).索引

## 3.索引 list = [1,2,3,[1,2,3]] print(list[0]) print(list[-1]) print(list[-1][1])

4).切片

## 4.切片 list = ['172','25','254','100'] print(list[:2]) print(list[1:]) print(list[::-1]) print('.'.join(list[::-1])) ## 倒敘拼接

5).for 循環

## 5.for 循環 names = ['成都','西安','重慶'] for name in names:print(f'最受歡迎的旅游城市是:{name}')

3.列表的常用方法

1).增加

#(1)追加 list = [1,2,3] list.append(4) print(list) #(2)在列表開頭添加 list = [1,2,3] list.insert(0,4) print(list) #(3)在索引2前面添加 list = [1,2,3] list.insert(2,4) print(list) #(4)一次追加多個元素 list = [1,2,3] list.extend([4,5,6]) print(list)

2).修改

## 2.修改 list = [1,2,3] list[0] = 'sun' list[2] = 'chen' print(list)

效果:

3).查看

## 3.查看 #(1)通過索引和切片查看元素 #(2)通過索引值和出現次數 list = [1,2,2,2,2,3,4,4,5] print(list.count(2)) # 元素2出現的次數? print(list.index(3)) # 元素3的索引值是多少?

## 4.刪除 # (1) 根據索引刪除 list = [1,2,3] del_num = list.pop(0) print(list) print(f"刪除的元素是:",del_num) # (2) 根據value值刪除 list = [1,2,3] list.remove(1) print(list) # (3) 全部清空 list = [1,2,3] list.clear() print(list)

5).其他操作

## 5.其他操作 list = [55,33,99] list.reverse() ## 反轉 print(list) list.sort() ## 排序 print(list) # sort 排序默認從小到大排序 ,如果想大到小reverse=True list.sort(reverse=True) print(list) list1 = list.copy() # 拷貝 print(id(list),id(list1)) print(list,list1)

三、元組

元組tuple(戴了緊箍咒的列表)

1.元組的創建

## 1.元組的創建 t1 = () #空元組 print(t1, type(t1)) t2 = (1,) #元組只有一個元素的時候一定要加逗號。 print(t2, type(t2))

2.基本特性

## 2.基本特性 print((1,2,3)+(3,)) # 添加 print((1,2,3)*2) #重復 print(1 in (1,2,3)) # 成員操作符 t = (1,2,3) print(t[0]) print(t[-1]) print(t[:2]) print(t[1:]) print(t[::-1])

3.常用方法:元組是不可變數據類型(不能增刪改)

## 3.常用方法:元組是不可變數據類型(不能增刪改) ## 查看:通過索引和切片查看元素,查看索引值和出現次數 t = (1,2,3,1,1,3,2) print(t.count(1)) # 1出現3次 print(t.index(3)) # 元素3 的索引值是2

4.命名元組

# 從collections模塊中導入namedtuple工具 from collections import namedtuple # 1.創建命名元組對象User User = namedtuple('User',('name','age','city')) # 2.給命名元組傳值 user1 = User("hello",18,"西安") # 3.打印命名元組 print(user1) # 4.獲取命名元組指定的信息 print(user1.name) print(user1.age) print(user1.city)

四、 is和== 的區別

1). Python中對象的三個基本要素,分別是:id(身份標識)、type(數據類型)和value(值)。

2). is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容并不相同。

3). ==用來比較判斷兩個對象的value(值)是否相等;(type和value)
is也被叫做同一性運算符, 會判斷id是否相同;(id, type 和value)

""" python語言:== : 類型和值是否相等is : 類型和值是否相等,內存地址是否相等 """ print(1 == '1') #False li = [1,2,3] li1 = li.copy() print(li ==li1) #True # 查看內存地址 print(id(li),id(li1)) print(li is li1) #False


列表的練習題目:

""" 編寫一個云主機管理系統:- 添加云主機(IP, hostname,IDC)- 搜索云主機(順序查找)- 刪除云主機- 查看所有的云主機信息 """ from collections import namedtuple menu = """云主機管理系統1). 添加云主機2). 搜索云主機(IP搜索)3). 刪除云主機4). 云主機列表5). 退出系統請輸入你的選擇: """# 思考1. 所有的云主機信息如何存儲?選擇哪種數據類型存儲呢? 選擇列表 # 思考2: 每個云主機信息該如何存儲?IP, hostname,IDC 選擇命名元組 hosts = [] Host = namedtuple('Host', ('ip', 'hostname', 'idc')) while True:choice = input(menu)if choice == '1':print('添加云主機'.center(50, '*'))ip = input("ip:")hostname = input("hostname:")idc = input('idc(eg:ali,huawei..):')host1 = Host(ip, hostname, idc)hosts.append(host1)print(f"添加{idc}的云主機成功.IP地址為{ip}")elif choice == '2':print('搜索云主機'.center(50, '*'))# 今天的作業: for循環(for...else),判斷, breakelif choice == '3':print('刪除云主機'.center(50, '*'))# 今天的作業:(選做)elif choice == '4':print('云主機列表'.center(50, '*'))print("IP\t\t\thostname\tidc")count = 0for host in hosts:count += 1print(f'{host.ip}\t{host.hostname}\t{host.idc}')print('云主機總個數為', count)elif choice == '5':print("系統正在退出,歡迎下次使用......")exit()else:print("請輸入正確的選項")

五、深拷貝與淺拷貝



問題: 深拷貝和淺拷貝的區別?/python中如何拷貝一個對象?

賦值: 創建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。(=)
淺拷貝: 對另外一個變量的內存地址的拷貝,這兩個變量指向同一個內存地址的變量值。(li.copy(), copy.copy())
公用一個值;
這兩個變量的內存地址一樣;
對其中一個變量的值改變,另外一個變量的值也會改變;
深拷貝: 一個變量對另外一個變量的值拷貝。(copy.deepcopy())
兩個變量的內存地址不同;
兩個變量各有自己的值,且互不影響;
對其任意一個變量的值的改變不會影響另外一個;

1. 值的引用

# 1. 值的引用 n1 = [1, 2, 3] n2 = n1 n1.append(4) print(n2) # 1, 2, 3, 4

2. 拷貝:淺拷貝和深拷貝

# 2. 拷貝:淺拷貝和深拷貝 # 2-1). 淺拷貝 n1 = [1, 2, 3] n2 = n1.copy() # n1.copy和n1[:]都可以實現拷貝。 print(id(n1), id(n2)) n1.append(4) print(n2)# 2-2). 為什么需要深拷貝? # 如果列表的元素包含可變數據類型, 一定要使用深拷貝。 """ 可變數據類型(可增刪改的): list 不可變數據類型:數值,str, tuple, namedtuple """ n1 = [1, 2, [1, 2]] n2 = n1.copy() # n1和n2的內存地址:的確拷貝了 print(id(n1), id(n2)) # n1[-1]和n2[-1]的內存地址: print(id(n1[-1]), id(n2[-1])) n1[-1].append(4) # n1 = [1, 2, [1, 2, 4]] print(n2)""" 深拷貝和淺拷貝最根本的區別在于是否真正獲取一個對象的復制實體,而不是引用。 假設B復制了A,修改A的時候,看B是否發生變化: 如果B跟著也變了,說明是淺拷貝,拿人手短!(修改堆內存中的同一個值) 如果B沒有改變,說明是深拷貝,自食其力!(修改堆內存中的不同的值) """ # 2-3). 如何讓實現深拷貝?copy.depcopy import copy n1 = [1, 2, [1, 2]] n2 = copy.deepcopy(n1) # n1和n2的內存地址:的確拷貝了 print(id(n1), id(n2)) # n1[-1]和n2[-1]的內存地址: print(id(n1[-1]), id(n2[-1])) n1[-1].append(4) # n1 = [1, 2, [1, 2, 4]] print(n2)

總結

以上是生活随笔為你收集整理的python的列表和元组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。