中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

序列之列表詳解

發布時間:2020-08-05 22:00:04 來源:網絡 閱讀:2108 作者:奇貓 欄目:編程語言

列表是python中常用的重要數據結構,它與字符串,元組都屬于序列,支持序列相關操作;
本文主要內容如下:
1>列表定義方式與基本用法;
2>列表遍歷;
2>字符串,元組與列表區別;
3>列表常用函數介紹。

1.列表定義方式:

列表在Python中表示方法:[val1, val2, val3],我們可以認為列表是一個大容器,里面可以放任意對象;
1)直接定義列表:

#數字列表,價格列表
price = [90, 89, 70,100]
#字符串列表,球隊列表
teams = ['恒大', '富力','申花', '國安']
#二維列表:學生成績列表:語文數學
scores = [[90, 80],[70,60],[30,40]]

2)使用list函數生成列表:
list():創建空列表;
list(itemable):將可迭代對象生成列表;
使用方式如下:

#字符串轉列表:
print(list('helloworld'))
#range對象轉列表:
print(list(range(10)))
#enumerate對象
print(list(enumerate('hello')))

3)修改列表元素值:
列表是一種可變數據結構,我們可以直接對其元素進行修改,例如:

#某用戶關注手機類型如下
phones = ['huawei', 'vivo', 'oppo', 'xiaomi']
print(phones)
#用戶想把第一個修改榮耀,操作如下:
phones[0] = '榮耀'
print(phones)

輸出結果如下:

['huawei', 'vivo', 'oppo', 'xiaomi']
['榮耀', 'vivo', 'oppo', 'xiaomi']

2.遍歷列表:

列表是一個可迭代對象,我們可以直接使用for循環對其遍歷;
1)遍歷一維列表:

phones = ['huawei', 'vivo', 'oppo', 'xiaomi']
#for循環遍歷
for phone in phones:
    print(phone)

2)遍歷二維列表:
如果是二維列表,我們希望遍歷到每個元素,舉個例子:

#NBA運動員,列表組成:球員列表,球員
#我們希望遍歷每個球員名稱
players = [['哈登', '庫里','保羅'],['詹姆斯','杜蘭特'],'霍華德']

我們可以遍歷players列表,但是如何遍歷每個子列表?
我們需要知道這個元素是不是列表,如何確認players中每個元素類型?
我們可以使用type或者isinstance函數,這兩個函數說明如下:

函數 說明
type(object) 返回對象類型
isinstance(obj, class_or_tuple, /) obj對象是否是指定類型或者指定其中一個

看下具體操作:

s = 'math'
#判斷類型
print('"{}"is str={}'.format(s, isinstance(s, str)))
#查看類型
print('type("{}")={}'.format(s, type(s)))
a = 10
print('type({})={}'.format(a, type(a)))
#查看列表每個元素類型
items = ['a',[1,2]]
print('items=',items)
for index, item in enumerate(items):
    print('type(items[{}])={}'.format(index, type(item)))

輸出結果如下:

"math"is str=True
type("math")=<class 'str'>
type(10)=<class 'int'>
items= ['a', [1, 2]]
type(items[0])=<class 'str'>
type(items[1])=<class 'list'>

這時我們想到什么?判斷列中重元素是不是列表,如果是的話,繼續遍歷,否則打印出來,偽代碼如下:

players = [['哈登', '庫里','保羅'],['詹姆斯','杜蘭特'],'霍華德']
for item in players:
    if isinstance(item, list):
        遍歷子列表
    else:
        print(item)

這個是我們的思路,剩下的就是代碼實現,如下:

players = [['哈登', '庫里','保羅'],['詹姆斯','杜蘭特'],'霍華德']
for item in players:
    if isinstance(item, list):
        for val in item:
            print(val)
    else:
        print(item)

再來思考下:如何遍歷多維列表?根據上面實現,偽代碼如下:

players = [['哈登', '庫里','保羅'],['詹姆斯','杜蘭特'],'霍華德']
for item in players:
    if isinstance(item, list):
        for val in item:
            if isinstance(val, list):
                for x in val:
                    if....
                    ...
                    ....
                    #對比起,我實在寫不下去了
            else:
                print(val)
    else:
        print(item)

這里可以考慮使用遞歸了,這個是我們后面學習內容,暫時就到二維列表了。

3.字符串,元組與列表區別:

字符串與元組是不可變的數據結構,列表是可變的數據結構,什么是可變與不可變?我們可以對列表的某個元素值進行修改,我們來嘗試修改字符串某值:

#對比列表與字符串
list1 = [1,2,3]
list1[0] = 10
print(list1)
#修改字符串值:
s = 'test'
s[0] = 'T'
print(s)

輸出結果:

[10, 2, 3]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-67d2a1e0bacd> in <module>()
      5 #修改字符串值:
      6 s = 'test'
----> 7 s[0] = 'T'
      8 print(s)

TypeError: 'str' object does not support item assignment

運行出錯,因為字符串不能被修改。這時候我們應該有個疑問:字符串的替換,大小寫轉換,為什么可以?來個例子我們看下:

#王者榮耀英雄名
Heroes = ['蘇烈','花木蘭','馬可波羅','白起','鬼谷子']
print('{} addr={}'.format(Heroes, id(Heroes)))
#更改第一個元素,然后對比列表地址
Heroes[0] = '程咬金'
print('{} addr={}'.format(Heroes, id(Heroes)))
#定義字符串,然后大小寫變化,在看地址
s = 'CookBook'
print('{} addr={}'.format(s, id(s)))
s = s.title()
print('{} addr={}'.format(s, id(s)))
#結果:列表修改后地址不變,但是字符串地址變化,

字符串不是在原來基礎修改,而是創建新的字符串,這個就是字符串元組與列表不同,大家在理解下。

列表常用方法 :

1)序列常規操作:

Heroes = ['蘇烈','花木蘭','馬可波羅','白起','鬼谷子']
#取值:
print(Heroes[0])
#獲取長度:
print(len(Heroes))
#切片操作:
print(Heroes[1:])

2)數字列表相關操作:
對列表常用的方法如下:

方法 說明
max(iterable, *[, default=obj, key=func]) 獲取最大值
min(iterable, *[, default=obj, key=func]) 獲取最小值
sum(iterable, start=0, /) 對數字可迭代對象求和

這些方法使用如下:

#考試成績得分
scores = [90, 80, 95, 85]
#獲取最大值:
print('最高分:', max(scores))
#獲取最小值:
print('最低分:', min(scores))
#獲取總分
allscore = sum(scores)
print('總得分:', allscore)
#平均分
lens = len(scores)
print('平均分:',allscore/lens)

到這里我們對列表常用方法就介紹完了,如果有編寫問題,歡迎在評論區指正;
關于列表詳細說明與使用,歡迎大家關注老貓專欄:https://blog.51cto.com/cloumn/detail/34。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德化县| 晋城| 新宁县| 萍乡市| 马龙县| 刚察县| 八宿县| 福建省| 平泉县| 五指山市| 共和县| 渑池县| 绥芬河市| 铜川市| 宜春市| 水城县| 江山市| 芦山县| 时尚| 法库县| 盐源县| 临城县| 新兴县| 永寿县| 温泉县| 鄂托克前旗| 于都县| 金湖县| 旌德县| 合肥市| 昭苏县| 商洛市| 揭阳市| 武宁县| 永吉县| 保德县| 银川市| 平潭县| 太白县| 桓台县| 固原市|