『Python基础-8』列表


1. 列表的基本概念

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

运行结果:

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

2. 创建列表

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

1.创建一个普通列表:

list1 = [1,2,3]

2.创建一个复合列表:

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

3.创建一个空列表:

list3 = []

3. 增加列表元素: 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']]

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

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

运行结果如下

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

运行结果如下:

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

Tips: 要想取到最后一位下标所在的元素即包含进去,可行方法是,取切片范围时,结束下标写最大下标+1.

例如上边的例子,列表最大下标为2,切片取列表最后两个元素替换时,切边范围写[1:3],可以成功替换列表最后两个元素,不会报错.

5. 删除列表元素: 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()。

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

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

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

运行结果如下:

False True

7. 对列表内元素排序: .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']

[注意]:

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

8. 倒着打印列表

要反转列表元素的排列顺序,可使用方法reverse()。

注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排 列顺序

方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此 只需对列表再次调用reverse()即可。

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

运行结果:

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

9. 确定列表的长度

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

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

在你需要完成如下任务时,len()很有用: 需要管理多少 项可视化数据,网站有多少注册用户等。

[注意:]Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误.

10. 使用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]

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

有几个专门用于处理数字列表的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来排序

『Python基础-8』列表的更多相关文章

  1. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  2. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  3. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  4. 『Python基础-9』元祖 (tuple)

    『Python基础-9』元祖 (tuple) 目录: 元祖的基本概念 创建元祖 将列表转化为元组 查询元组 更新元组 删除元组 1. 元祖的基本概念 元祖可以理解为,不可变的列表 元祖使用小括号括起所 ...

  5. 『Python基础-7』for循环 & while循环

    『Python基础-7』for循环 & while循环 目录: 循环语句 for循环 while循环 循环的控制语句: break,continue,pass for...else 和 whi ...

  6. 『Python基础-6』if语句, if-else语句

    # 『Python基础-6』if语句, if-else语句 目录: 条件测试 if语句 if-else语句 1. 条件测试 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为 ...

  7. 『Python基础-5』数字,运算,转换

    『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...

  8. 『Python基础-4』字符串

    # 『Python基础-4』字符串 目录 1.什么是字符串 2.修改字符串 2.1 修改字符串大小 2.2 合并(拼接)字符串 2.3 使用乘号'*'来实现字符串的叠加效果. 2.4 在字符串中添加空 ...

  9. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

随机推荐

  1. ubuntu 安装nodejs和git

    1.安装curl sudo apt-get install curl 2.安装nodejs 和 npm curl -sL https://deb.nodesource.com/setup_8.x | ...

  2. 爬虫入门之Scrapy框架基础rule与LinkExtractors(十一)

    1 parse()方法的工作机制: 1. 因为使用的yield,而不是return.parse函数将会被当做一个生成器使用.scrapy会逐一获取parse方法中生成的结果,并判断该结果是一个什么样的 ...

  3. June 19th 2017 Week 25th Monday

    Everyone is dissatisfied with his own fortune. 人对自己的命运总是感到不满足. We always want more, even when we hav ...

  4. 如何在Windows 7/8/10中使用热键来调整音量?

    有时,您需要一个热键来调整Windows PC中的音量.例如:播放全屏视频或游戏时需要调整音量. 有一个简单的方法可以做到: 安装并运行Perfect Hotkey软件.   配置键盘快捷键以进行音量 ...

  5. Android MVP 简析

    原地址:https://segmentfault.com/a/1190000003927200 在Android中应用MVP模式的原因与方法的简析,写的简单易懂.

  6. 如何给SAP C4C的产品主数据division配置出新的下拉选项

    如图:C4C产品主数据division字段默认的下拉菜单选项: 切换成调试模式,找到UI这个字段绑定的模型字段名称:/Root/MaterialDivision: 再找到这个UI模型字段绑定到的cor ...

  7. What Is a Computer System?

    What Is a Computer System? A combination of Five or Six Elements The term computer is used to descri ...

  8. 基于IDEA的JavaWeb开发环境搭建

    基于IDEA的JavaWeb开发环境搭建 基于IDEA的JavaWeb开发环境搭建 jdk下载安装配置环境变量 下载 安装 配置环境变量 下载安装激活使用IntelliJ IDEA 下载 安装 激活 ...

  9. Allocate exception for servlet ValidateUsernameServlet 异常

    如果eclipse无法对类文件进行编译那么运行时就会发生 Allocate exception for servlet ValidateUsernameServlet 异常,说找不到类.

  10. Mycat数据库中间件对Mysql读写分离和分库分表配置

    Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个 ...