pyton基础【三、列表(list)】

@[toc]

列表的应用与实例

列表(list)是一组有序存储的数据,具有如下特性:

  • 和变量一样,每个列表都有一个唯一标识它的特性
  • 列表中元素的类型可以相同,也可以不同,它支持数字,字符串,列表等
  • 每个列表元素都有索引和值两个属性,索引是一个<font color=Red>从0开始</font>的整数,用于标识原色在列表的位置;值就是元素对应的值
  • <font color=Red>列表的第一个元素的索引是0,最后一个元素的索引是列表长度-1</font>

1.定义列表

li=[5,4,8,['red','bule',['小蕊','小张'],'yellow'],'alex',2] #注意li只有6个元素

2.打印列表

print(li)

运行结果

[5, 4, 8, ['red', 'bule', ['小蕊', '小张'], 'yellow'], 'alex', 2]

3.访问列表元素

print(li[3])   #打印索引3的值
print(li[-1])   #打印最后一个元素
print(li[3:5])  #打印索引3和4的值
print(li[3:-1])  #打印索引3和-1(看见负号就从左数)的值

运行结果

['red', 'bule', ['小蕊', '小张'], 'yellow']
2
[['red', 'bule', ['小蕊', '小张'], 'yellow'], 'alex']
[['red', 'bule', ['小蕊', '小张'], 'yellow'], 'alex']

4.获取列表长度

可通过len()函数获取列表的长度

print(len(li))

运行结果

6

如果一个l列表中一个元素也没有,就是一个空的列表,它的长度为0

a=[]
print(len(a))

运行结果

0

5.修改列表中的元素

li[3]=102
print(li)

运行结果

[5, 4, 8, 102, 'alex', 2]

6.添加列表元素

<1>可以通过append()函数在列表尾部添加元素

列表.append(新值)

li=[5, 4, 8, 102, 'alex', 2]
li.append('love')
print(li)

运行结果

[5, 4, 8, 102, 'alex', 2, 'love']

<2>可以通过insert()函数在列表指定的位置插入一个元素

列表.insert(插入位置,新值)

li=[5, 4, 8, 102, 'alex', 2]
li.insert(1,0)
print(li)

运行结果

[5, 0, 4, 8, 102, 'alex', 2, 'love']

<3>可以通过extend()函数将一个列表中的每个元素分别添加到另一个列表中

列表 1.extend(列表2)
a=[5,4,8,['red','bule',['小蕊','小张'],'yellow']]
b=['alex',2]
a.extend(b) #将列表b中的每个元素添加到列表a
print(a)

a=[5,4,8,['red','bule',['小蕊','小张'],'yellow']]
b=['alex',2]
b.extend(a)  #将列表a中的每个元素添加到列表b
print(b)

运行结果

[5, 4, 8, ['red', 'bule', ['小蕊', '小张'], 'yellow'], 'alex', 2]
['alex', 2, 5, 4, 8, ['red', 'bule', ['小蕊', '小张'], 'yellow']]

<4> appendextend区别

li=[22,33,44,55]
li.append([666,'不得了'])
print(li)

运行结果

[22, 33, 44, 55, [666, '不得了']]
li=[22,33,44,55]
li.extend([666,'不得了'])  #扩展源列表  参数是:可迭代对象  相当于进行了for循环遍历扩充的元素
print(li)

li=[22,33,44,55]
li.extend('不得了')  #扩展源列表  参数是:可迭代对象
print(li)

运行结果

[22, 33, 44, 55, 666, '不得了']
[22, 33, 44, 55, '不', '得', '了']

<font color=Red>extend相当于进行了for循环遍历扩充的元素</font>

7.合并2个列表

可以使用“+”运算符将两个列表合并,并得到一个新的列表

a=[1,2,3]
b=[3,4,5]
c=a+b
print(c)

运行结果

[1, 2, 3, 3, 4, 5]

注意:

  • 合并两个列表并不会把相同的元素消减一个
  • "+"extend()的区别:"+"生成的新列表会有一个新地址而extend()只是把其中一个列表添加到另一个列表中,最后生成的新列表地址并不会改变

8.删除列表元素

<1>使用del语句可以删除指定的列表元素

del 列表名[索引]

a=[1,2,3,4]
del a[0]
print(a)

b=[1,2,3,4,5]
del b[1:4] #删除索引为1,2,3的元素
print(b)

运行结果

[2, 3, 4]
[1, 5]

<2>用列表.pop(i)方法,其中i是索引位置,删除指定的列表元素

a=[1,2,3,4]
a.pop(0)
print(a)

运行结果

[2, 3, 4]

<3>用列表.pop()方法要删除列表末尾的元素

a=[1,2,3]
a.pop()
print(a)

运行结果

[1, 2]

<4> 用remov()移除指定的列表元素

li=[11,22,33,22]
li.remove(22)   #当列表里有相同的元素时,它会自动从左往右找直到找到第一个对的元素并删除
print(li)

运行结果

[11, 33, 22]

9.定位列表元素

使用index()函数获取列表中某个元素的索引

列表.index(元素值)

a=[1,2,3]
print(a.index(2))

运行结果

1

10.遍历列表元素

<1>使用for语句

L=[1,2,3,4]
for i in L:
    print(i)

运行结果

1
2
3
4

<2>使用for语句和range()函数

for i in range(len(list)):
print(list[i])

for i in range(len(L)):
    print(L[i])

运行结果

1
2
3
4

<3>使用for语句和enumerate()函数同时遍历列表的元素索引和元素值

for 索引, 元素值 in enmuerate(list):
访问索引和元素值

for index,value in enumerate(L):
    print("第%d个元素值是[%s]"%(index,value))

运行结果

第0个元素值是[1]
第1个元素值是[2]
第2个元素值是[3]
第3个元素值是[4]

11.列表排序

列表排序操作是按列表元素值的升序、降序或反序重新排列列表元素的位置

<1>使用sort()函数对列表进行升序排列

列表.sort()

li=['apple','banana','pear','grape']
li.sort()
print(li)

运行结果

['apple', 'banana', 'grape', 'pear']

<2>使用reverse()函数对列表进行反序排列

li=['apple','banana','pear','grape']
li.reverse()
print(li)

运行结果

['grape', 'pear', 'banana', 'apple']

<3>降序

<font color=Red>如果想对列表进行降序排列,可以先进行升序排列然后再反序排列一下即可</font>

li=['apple','banana','pear','grape']
li.sort()
li.reverse()
print(li)

运行结果

['pear', 'grape', 'banana', 'apple']

12.产生一个数值递增列表

使用range()函数可以产生一个数值递增列表

range(start,end)

参数说明:

  • start:一个整数,指定产生的列表的其实元素值,start为可选参数,默认值为0
  • end:一个整数,指定产生的列表的结束元素值
  • range()函数返回一个列表,该列表由从start开始至end结束(不包含end)的整数组成
list1=range(10)
list2=range(11,20)
for index,value in enumerate(list1):
    print("list1的第%d个元素值是[%s]"%(index,value))
for index,value in enumerate(list2):
    print("list2的第%d个元素值是[%s]"%(index,value))

运行结果

list1的第0个元素值是[0]
list1的第1个元素值是[1]
list1的第2个元素值是[2]
list1的第3个元素值是[3]
list1的第4个元素值是[4]
list1的第5个元素值是[5]
list1的第6个元素值是[6]
list1的第7个元素值是[7]
list1的第8个元素值是[8]
list1的第9个元素值是[9]
list2的第0个元素值是[11]
list2的第1个元素值是[12]
list2的第2个元素值是[13]
list2的第3个元素值是[14]
list2的第4个元素值是[15]
list2的第5个元素值是[16]
list2的第6个元素值是[17]
list2的第7个元素值是[18]
list2的第8个元素值是[19]

13.定义多维列表

可以将多维列表视为列表的嵌套,即多维列表的元素值也是一个列表,只是比其父列表少一个维度;二维列表的元素值是一维列表,三维列表的值是二维列表,以此类推

<1> 定义二维列表

list=[['内存','CPU'],['硬盘','声卡']]

<2> 遍历二维列表

for i in list:
    print(i)

for i in range(len(list)):
    print(list[i])

运行结果

['内存', 'CPU']
['硬盘', '声卡']

['内存', 'CPU']
['硬盘', '声卡']

<3>使用嵌套for语句打印二维列表的每一个元素

for i in range(len(list)):
    list1=list[i]
    for j in range(len(list1)):
        print(list1[j])

运行结果

内存
CPU
硬盘
声卡

<4>使用嵌套两个索引访问二维列表的每一个元素

for i in range(len(list)):
    for j in range(len(list[i])):
        print(list[i][j])

运行结果

内存
CPU
硬盘
声卡

14.字符串和列表相互转换

<1>字符串转成列表

L='dshiauchj'
new_L=list(L)
print(new_L)

运行结果

['d', 's', 'h', 'i', 'a', 'u', 'c', 'h', 'j']

<2>列表转换成字符串

(1) 如果列表里全都是字符串

"".join(列表)

li=['123','alex']
v="".join(li)
print(v)

运行结果

123alex

(2) 如果列表里既有字符串还有数字

需要自己写一个for循环一个一个处理

li=[1,2,123,'alex']
s=""
for i in li:
    s+=str(i)
print(s)

运行结果

12123alex

15.列表清空

列表.clear()

li=[1,2,3,'alex']
li.clear()
print(li)

运行结果

[]

16.拷贝列表

列表.copy

  li=[1,3,'alex']
   new_li=li.copy()
   print(new_li)

运行结果

[1, 3, 'alex']

17.计算列表中某个元素的个数

列表.count()

li=[1,2,3,2,2,5]
v=li.count(2)
print(v)

运行结果

3

18.根据元素找索引位置

列表.index()

<font color=Red>当列表里有相同的元素时,它会自动从左往右找直到找到,后面的元素不予理睬</font>

li=[11,22,33,22,44]
v=li.index(11)
print(v)
v=li.index(22)  #当列表里有相同的元素时,它会自动从左往右找直到找到,后面的元素不予理睬
print(v)

运行结果

0
1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容