列表是由一系列按特定顺序排列的元素组成, 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表、字典(即嵌套)。

用([])来表示列表,并用逗号(,)分隔各个元素。

在学习列表之前,先学习一个函数,range()函数:

 l = range(6)
print(l)
print(type(l))

输出结果:

range(0, 6)
<class 'range'>

只是这样是看不出来这个函数到底有什么用,又可以用来干什么的,那么如果在for循环中使用range()函数,又会发生什么呢?

 for value in range(6):
print(value)

输出结果:

0
1
2
3
4
5

可以看出,,使用for循环输出了0-5,这说明range()函数可以产生0-5的整数列表。

range()函数的完整语法:

range(start, stop, [, step ])  # 这是什么意思?直接上示例:

 for value in range(1, 6, 2):
print(value)

输出结果:

1
3
5

对比上个程序可以看出:

start表示开始计数的位置,默认是0,

stop表示截止位置,不包括这一位,

step表示间隔几个数,即步长。

再看下面的程序:

 for value in range(1, -6, -2):
print(value)

输出结果:

1
-1
-3
-5

可以看出range()也可以产生负数,其中步长需为负的。

下面来开始学习列表:

1、列表的创建

  (1)直接创建

 list = [a, c, f, g, b, e , h, d]

  (2)使用range()函数

 list = list(range(6))

  (3)使用for和range()函数

 list = []
for i in range(6):
list.append(i)

  (4)列表解析

 list = [value for value in range(6)]

2、列表的增删改查:

  (1)增加元素

      在列表的末尾添加元素

 list = [0, 1, 2, 3, 4, 5]
list.append(6)
# list1.append(0, 1) #只能有一个参数
print(list)

输出结果:

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

      在指定位置添加元素

 list = [0, 1, 2, 3, 4, 5]
list.insert(1, 1)
print(list)

输出结果:

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

  (2)删除元素

      删除指定位置的元素

 list1 = [0, 1, 2, 3, 4, 5]
list2 = [0, 1, 2, 3, 4, 5]
del list1[1]
print(list1) pop_list = list2.pop(1)
print(pop_list)
print(list2)

输出结果:

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

由输出结果可以看出,del是语句删除,没有返回值,删除的元素就算是删除了,而使用list.pop()函数有返回值,返回被删除的值,可以将其赋值给一个变量,以便在下次使用时还可以用。

list.pop()函数可以不填参数,如果不填参数默认删除末尾的元素。

      根据值删除

 list = [0, 1, 2, 1, 3, 4, 5]
data = list.remove(1)
print(data)
print(list)

输出结果:

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

可以看出,remove()函数删除没有返回值,且如果列表中有重复值,只会删除第一个值。

  (3)修改列表元素

 list = [0, 1, 2, 3, 4, 5]
list[0] = 1
print(list)
list[1:4] = [3, 2, 1] # 要一一对应才行
print(list)
list[1:4] = [3, 2]
print(list)
list[1:4] = [3, 2, 1, 6]
print(list)

输出结果:

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

修改列表元素直接通过下标进行修改,需要注意的是使用list[1:4] = [3, 2, 1]这种形式的时候一定要左右两边对应,左边是几个数,右边也是几个数,如果右边少了,那么少的那位将会被删除。如果右边多了,将会增加元素。

  (4)访问列表

 list1 = [1, 2, 3, 4, 5, 6, 7]
print(list1[6]) # 列表的下标是从第0位开始的
print(list1[1:5]) # 注意:[1:5]表示取下标为1到下标为5-1的元素。
print(list1[2:]) # 输出第2位到最后一位
print(list1[:5]) # 输出第0位到第5-1位
print(list1[:])
print(list1[-1]) # -1表示最后一个元素,-2表示倒数第二个元素,以此类推。
print(list1[-2])
print(list1[-2:]) # 从末尾开始算起

输出结果:

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

3、列表排序

    按字母顺序排列

 list = ['acb', 'cab', 'fbg', 'fag', 'b', 'e', 'h', 'd']
list2 = [1, 4, 7, 2, 5, 8]
list.sort() # 按字母顺序排列
print(list) list.sort(reverse=True) # 按字母倒序排列
print(list) # list2.sort(list2) # 不能对数字类型的列表排序

输出结果:

['acb', 'b', 'cab', 'd', 'e', 'fag', 'fbg', 'h']
['h', 'fbg', 'fag', 'e', 'd', 'cab', 'b', 'acb']

sort()函数不能对数字类型的列表排序,由结果可以看出,当元素为字符串时,先按首字母参与排序,如果有两个元素首字母相同则比较这两个元素的第二个字母来进行排序。

    反转列表元素顺序

 list = ['acb', 'cab', 'fbg', 'fag', 'b', 'e', 'h', 'd']
list.reverse()
print(list)
list.reverse()
print(list)

输出结果:

['d', 'h', 'e', 'b', 'fag', 'fbg', 'cab', 'acb']
['acb', 'cab', 'fbg', 'fag', 'b', 'e', 'h', 'd']

List.reverse() :反转列表元素的排列顺序,再一次使用该函数就变回原来的顺序。

    显示排序

 list = ['acb', 'cab', 'fbg', 'fag', 'b', 'e', 'h', 'd']
print(sorted(list))
print(list)

输出结果:

['acb', 'b', 'cab', 'd', 'e', 'fag', 'fbg', 'h']
['acb', 'cab', 'fbg', 'fag', 'b', 'e', 'h', 'd']

可以看出sorted()函数只是在输出显示时对列表进行了排序,但是当输出原列表时,原列表并没有改变,这说明该函数的排序对列表的修改不是永久性的,而sort()函数,和reverse()函数对列表的排序修改是永久性的。

4、遍历列表

    for循环遍历列表

 list = [1, 4, 7, 2, 5, 8]
for i in list:
print(i)

输出结果:

1
4
7
2
5
8

    while循环遍历列表

 index = 0
while index < len(list):  # len(x)计算x的长度,在这里指的是列表长度,即元素个数
print(list[index])
index += 1

输出结果:

1
4
7
2
5
8

5、其他对列表的操作

    计算列表的最大、最小值和总和

list = [1, 4, 7, 2, 5, 8]
print(min(list))
print(max(list))
print(sum(list))

输出结果:

1
8
27

    复制列表

 list = [1, 4, 7, 2, 5, 8]
list2 = list[:] # 该种方式复制时,原列表改变时不影响复制的列表
list3 = list # 该种方式复制时,当原列表改变时复制列表页改变 print(list2)
print(list3) list[2] = 9
print("修改后的结果:")
print(list)
print(list2) # list2没有改变
print(list3) # 没有修改list3但是list3也改变了

输出结果:

[1, 4, 7, 2, 5, 8]
[1, 4, 7, 2, 5, 8]
修改后的结果:
[1, 4, 9, 2, 5, 8]
[1, 4, 7, 2, 5, 8]
[1, 4, 9, 2, 5, 8]

python列表(list)的简单学习的更多相关文章

  1. Linux yum的配置 , python环境管理, nginx搭建简单学习

    Linux yum的配置 , python环境管理, nginx搭建简单学习 一丶配置yum的数据仓库 ### yum 工具, 方便,自行解决软件之间的依赖关系. # 配置yum源仓库 (可以使用,清 ...

  2. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...

  3. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2

    孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...

  4. !!对python列表学习整理列表及数组详细介绍

    1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...

  5. Python模块——loguru日志模块简单学习

    Python loguru模块简单学习 首先安装模块:pip install logoru,然后引入模块: from loguru import logger 1.直接输出到console logge ...

  6. Python 学习笔记(八)Python列表(一)

    列表基本操作 列表(list)定义  列表是Python中的一种对象类型,也是一种序列 对象类型:list 表示方法:[ ] python 列表中的元素可以是任何类型的对象 >>> ...

  7. python 列表学习

    一.创建一个列表(list)_使用逗号分隔不同的数据项,使用方括号括起来. list = [1,2,3,4,5,6,7] 与字符串的索引一样,列表索引从 0 开始,列表可以截取.组合. 二.访问列表中 ...

  8. Day1 老男孩python自动化运维课程学习笔记

    2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...

  9. Python与C的简单比较(Python3.0)

    Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...

随机推荐

  1. Netty使用(一)

    什么是Netty Netty由JBOSS提供的基于Java NIO的开源框架,Netty提供异步非阻塞.事件驱动.高性能.高可靠.高可定制性的网络应用程序和工具, 可用于开发服务端和客户端. 配置服务 ...

  2. C++ openmp并行程序在多核linux上如何最大化使用cpu

    以上代码中,#pragma omp parallel for 这一行的作用即是调用openmp的功能,根据检测到的CPU核心数目,将for (i = 0; i < 1000000000; i++ ...

  3. 转存下链接--- Java awt Swing 进行拖拽实现布局

    http://blog.csdn.net/vpingchangxin/article/details/8673825 swing开发图形界面工具,eclipse swing图形化操作界面工具配置

  4. Effective C++ 笔记:条款 34 实现继承和接口继承

    Differentiate between inheritance of interface and inheritance of implementation. 行为含义 声明一个pure virt ...

  5. P1081 开车旅行(Not Finish)

    https://www.luogu.org/problemnew/show/P1081

  6. C++动态库的几点认识

    1.动态库也有lib文件,称为导入库,一般大小只有几k: 2.动态库有静态调用和动态调用两种方式: 静态调用:使用.h和.lib文件 动态调用: 先LoadLibrary,再GetProcAddres ...

  7. 阿里云 ECS centos java timer进程异常/混乱......的解决方法

    之前就知道timer进程长久运行容易出问题,所以一直对timer进行了很长一段时间的日志监控和数据库记录,大概观察了几个月,没发现过问题....然后就没管理了,数据库记录也没做了,昨天这问题就来了,t ...

  8. Qt HID USB通讯错误

    1.下载hidapi库 链接:https://pan.baidu.com/s/1iQBuTxg-fReN-7GTrCT6SA 提取码:xzqw 2.把库加入qt 转自:https://www.cnbl ...

  9. Unity3D InputManager详解

    首先说一下 Input 类,这个类很常用,API 大家基本都知道,这里记录几个使用频率没那么高的 API Input.acceleration:重力加速度传感器的值,加速度的方向,适用于移动平台. I ...

  10. thinkphp添加数据 add()方法

    thinkphpz内置的add()方法用于向数据库表添加数据,相当于SQL中的INSERT INTO 行为添加数据 add 方法是 CURD(Create,Update,Read,Delete / 创 ...