【Python基础】8. 列表 list

本篇笔记知识点:

  • 列表内的元素的增,删,改,查
  • 列表复制
  • 判断列表内的元素
  • 列表内元素排序

列表的基本概念

  • 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素。
  • 列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
  • 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是 个不错的主意。
  • 格式: 列表名=[元素1,元素2,元素3]
    • 用方括号[]括起来表示列表, 用逗号,分隔其中的元素.
    • 通过列表的小标访问列表元素
nameslist = ['xiaoWang',2,'xiaoHua']
testlist = [1, 'a']
print(nameslist)
print(testlist[0])

运行结果:

['xiaoWang', 2, 'xiaoHua']
1

创建列表

创建列表和创建变量的方式是一样的:

1.创建一个普通列表:

list1 = [1,2,3]

2.创建一个复合列表:

list2 = [43, "字符串", -0.87,[1,2]]

3.创建一个空列表:

list3 = []

增加列表元素: append,extend,insert

(1)方法append()会将元素追加在列表的末尾
(2)方法insert()会在指定下标位置插入元素,需要指定新加入元素的索引和值
(3)方法extend()可以将另一个集合的元素逐一加入列表中

list_a = ["a","b","c"]
list_a.append("d")
print(list_a)
list_a.insert(1,"e")
print(list_a)
list_b = ["c","d"]
list_a.extend(list_b)
print(list_a)

运行结果如下:

['a', 'b', 'c', 'd']
['a', 'e', 'b', 'c', 'd']
['a', 'e', 'b', 'c', 'd', 'c', 'd']

[注意]:
append 也可以把另一个集合添加到列表里,但是这整个集合会被视为一个元素来添加:

list_a = ["a","b","c"]
list_b = ["c","d"]
list_a.append(list_a)

运行结果如下:

['a', 'b', 'c', ['c', 'd']]

修改列表元素: 下标,重新复制

(1).根据下标修改列表的元素
nameslist = ["小新","正南","阿呆"]
print(nameslist)
nameslist[1] = "风间"
print(nameslist)

运行结果如下

['小新', '正南', '阿呆']
['小新', '风间', '阿呆']
(2).也可以通过切片修改列表中一部分的元素:
nameslist = ["小新","正南","阿呆"]
print(nameslist)
nameslist[1:3] = ["美芽","广志"]
print(nameslist)

运行结果如下:

['小新', '正南', '阿呆']
['小新', '美芽', '广志']

Tips: 要想取到最后一位下标所在的元素即包含进去,可行方法是,取切片范围时,结束下标写最大下标+1.
例如上边的例子,列表最大下标为2,切片取列表最后两个元素替换时,切边范围写[1:3],可以成功替换列表最后两个元素,不会报错.


删除列表元素: del,remove,pop

(1)使用del语句根据删除指定元素.

~ 使用del可删除任何位置处的列表元素,条件是知道其索引.
~ 使用del语句删除后,被删除的列表中的元素将无法再访问
~ del 是语句, 后边不要加括号什么的
~ del后加列表名,会把整个列表从内存删掉.

list1 = ["熊大","熊二","光头强"]
print(list1)
del list1[1]
print(list1)

运行结果:

['熊大', '熊二', '光头强']
['熊大', '光头强']
(2)使用方法.remove()根据值删除元素.

~ 不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使 用方法remove()

~ 方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

list1 = ["熊大","熊二","光头强"]
print(list1)
list1.remove("光头强")
print(list1)

运行结果:

['熊大', '熊二', '光头强']
['熊大', '熊二']
(3)使用方法 .pop()删除列表元素,并获取被删除的值

~ 使用方法 .pop()默认删除最后一个元素,可以通过下标删除指定位置的元素
~ 使用方法 .pop()可以把元素从列表删除后,继续使用它的值
~使用方法.pop(),运行后,控制台会返回被删除的值 (Del和remove不会),所以我们可以利用这个特性,给被删除的元素重新赋值,成为新的变量.

list2 = ["Dell","Apple","Lenovo","Sony","Asus"]
print("原始列表是:",list2)
brand = list2.pop(3)      #给被删除的元素重新赋值
print("被删除的元素是:",brand)

运行结果如下:

原始列表是: ['Dell', 'Apple', 'Lenovo', 'Sony', 'Asus']
被删除的元素是: Sony

Tips:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续 使用它,就使用方法pop()。


查询元素是否在列表里: in, not in

~查看某元素是否存在有列表中,返回的结果是布尔值: True /False

list3 = ["张三","李四","赵六","冯七","朱八"]
first_result = "王五" in list3
second_result = "王五" not in list3
print(first_result,second_result)

运行结果如下:

False True

对列表内元素排序: .sort()永久性排序,sorted()临时性排序

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。

(1)使用方法.sort()对列表进行永久性排序

~ 对列表内的元素按升序排序
~ 方法.sort()会永久性地修改了列表元素的排列顺序,无法恢复到原来的排列顺序
~ 向.sort()方法传递参数reverse=True可以翻转以默认升序排列的元素列,即翻转为降序排列.(同样,对列表元素排列顺序的修改是永久性的)

list1 = ["six","five", "one", "two"]
list1.sort()       #对list1进行排序
print(list1)
list1.sort(reverse=True) # 反转已经重新排序过的list1
print(list1)

运行结果:

['five', 'one', 'six', 'two']
['two', 'six', 'one', 'five']
(2)使用函数sorted()对列表进行临时排序

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()
函数 sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("Here is the sorted list:")
print(sorted(cars))
print("Here is the original list again:")
print(cars)

运行结果:

Here is the original list:  ['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:  ['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:  ['bmw', 'audi', 'toyota', 'subaru']

[注意]:
在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种 解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。然而, 大多数排序方式都基于本节介绍的知识。

倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。
注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排 列顺序
方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此 只需对列表再次调用reverse()即可。

cars = ['bmw', 'audi', 'toyota', 'subaru'] 3
print(cars)
cars.reverse() 
print(cars)

运行结果:

['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']

确定列表的长度

使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4:

cars = ['bmw', 'audi', 'toyota', 'subaru']
len(cars)   #运行结果:4

在你需要完成如下任务时,len()很有用: 需要管理多少 项可视化数据,网站有多少注册用户等。
[注意:]Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误.

使用range()创建数字列表

要创建数字列表,可使用函数list()将range()的结果直接转换为列表.如果将range()作为list()的参数,输出将为一个数字列表.
使用函数range()时,还可指定步长。例如,下面的代码打印1~10内的偶数:

numbers = list(range(1,6))
print(numbers)   #[1,2,3,4,5]
even_numbers = list(range(2,11,2)) 
print(even_numbers)           #[2,4,6,8,10]

对数字列表执行简单的统计计算

有几个专门用于处理数字列表的Python函数。例如,你可以轻松地找出数字列表的最大值,最小值和总和:

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print (min(digits))     #0
print(max(digits))     #9
print(sum(digits))    #45


------------基本列表操作------------
Python表达式 结果 描述
len([1, 2, 3]) 3 列表的长度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 联接
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] True
for x in [1,2,3] : print (x,end = ' ') 1 2 3 迭代


------------列表索引,切片和矩阵------------

假设以下输入 : List = ['C++'', 'Java', 'Python']

Python表达式 结果 描述
L[2] 'Python' 偏移量,从零开始
L[-2] 'Java' 负数:从右到右
L[1:] ['Java', 'Python'] 切片提取部分


------------Python内置列表函数功能------------
方法 描述
cmp(list1, list2) 在Python 3中不再可用。
len(list) 给出列表的总长度。
max(list) 从列表中返回最大值的项目。
min(list) 从列表中返回最小值的项目。
list(seq) 将元组转换为列表。


------------Python内置列表方法------------
方法 描述
list.append(obj) 将对象obj追加到列表中
list.count(obj) 返回列表中出现多少次obj的计数
list.extend(seq) 返回列表中出现多少次obj的计数
list.extend(seq) 将seq的内容附加到列表中
list.insert(index, obj) 将对象obj插入到偏移索引的列表中
list.pop(obj = list[-1]) 从列表中删除并返回最后一个对象或obj
list.remove(obj) 从列表中删除对象obj
list.reverse() 反转列表中的对象
list.sort([func]) 排序列表的对象,如果给出,则使用比较函数func来排序
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容