Python编程笔记 - 列表
这篇文章开始介绍Python中的容器。Python容器包括列表、元组、集合与字典。这些数据结构中都涉及到很多的方法,这里对比较常用的一些方法进行介绍,不用每个方法都记住,熟悉常用的即可。
首先,我们先来看列表。
一、列表的创建方式
# -*- coding: utf-8 -*-
# __author : Demon
# date : 1/16/18 8:19 PM
# 列表的创建
empty_list_01 = [] # 创建一个空的列表
empty_list_02 = list() # 创建一个空的列表
num_list = [1, 2, 3, 4, 5] # 创建一个数字列表
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
mix_list = [1, 'a', 'abc'] # 一个列表中可包含元素类型不是固定的
nest_list = [num_list, str_list, mix_list] # 列表可以嵌套
print(num_list) # [1, 2, 3, 4, 5]
print(str_list) # ['a', 'b', 'c']
# 由打印结果可以看出列表的存储是有顺序的
# 即怎么存的就怎么取
print(num_list[0]) # 列表接受下标访问,类似于JAVA中的数组 1
print(num_list[1]) # 列表接受下标访问,类似于JAVA中的数组 2
print(num_list[2]) # 列表接受下标访问,类似于JAVA中的数组 3
print(num_list[3]) # 列表接受下标访问,类似于JAVA中的数组 4
print(num_list[4]) # 列表接受下标访问,类似于JAVA中的数组 5
# 一旦超出长度,就会抛出异常
# print(num_list[5]) # IndexError: list index out of range
二、列表中的常用操作
# -*- coding: utf-8 -*-
# __author : Demon
# date : 1/16/18 8:19 PM
# 1. 列表的循环方式【重要】
num_list = [1, 2, 3, 4, 5] # 创建一个数字列表
for num in num_list:
print(num, end="") # 123456
print()
# 2. 求长度
num_list = [1, 2, 3, 4, 5] # 创建一个数字列表
print(len(num_list)) # 5
# 3. 判断列表是否为空【重要】
empty_list = list()
num_list = [1, 2, 3]
# 利用非0即True的原则【推荐方法】
if not empty_list: # 如果列表为空
print("The list is empty")
else:
print("The list is not empty")
# 利用长度
if not len(num_list):
print("The list is empty")
else:
print("The list is not empty")
# 4. 判断元素是否存在【重要】
num_list = [1, 2, 3]
if 2 in num_list:
print("in")
else:
print("not in")
# 5. append(ele) 尾端添加元素
empty_list = [] # 创建一个空的列表
for s in "Hello":
empty_list.append(s)
print(empty_list) # ['H', 'e', 'l', 'l', 'o']
# 上述代码也是将字符串转换为列表的一种方式,只是代码比较复杂
# 6. 列表切片的用法,如字符串切片的用法类似【重要】
# 用法 list[start:end:step]
# start可省略,默认值为0
# end可省略,默认为最大长度
# step可省略,默认为1
# 范围是[start, end),即左闭右开
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
# 获取整个list, ['a', 'b', 'c']
print(str_list[::])
print(str_list[0:])
print(str_list[:3])
print(str_list[:200]) # 长度超出时,不会报错
# 获取部分
print(str_list[0:2]) # ['a', 'b']
print(str_list[0:2:2]) # ['a']
# 7.sort排序【重要】
# 注意这个方法没有返回值,是在原列表上进行修改
str_list = ["adfas", "dsdfw", "nklo"]
str_list.sort()
print(str_list) # ['adfas', 'dsdfw', 'nklo']
# 8.insert(pos, ele) 在指定位置插入元素
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
str_list.insert(2, "we") # ['a', 'b', 'we', 'c']
print(str_list)
# 如果位置超出长度,不会报错,会在尾部插入
str_list.insert(20, "we") # [['a', 'b', 'we', 'c', 'we']
print(str_list)
# 9.del(pos) 删除指定位置的元素
# 需要注意这个方法不是通过列表.调用的
# 可以类似理解为,它不是列表这个类中的方法
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
del str_list[0]
print(str_list) # ['b', 'c']
# del str_list[20] # IndexError: list assignment index out of range
# 10.extend(list)或+=合并
num_list = [1, 2]
str_list = ["a", "b"]
print(str_list + num_list) # ['a', 'b', 1, 2]
# 11.remove(ele) 删除指定值
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
str_list.remove("a")
print(str_list) # ['b', 'c']
# str_list.remove("d") # ValueError: list.remove(x): x not in list
# 12.pop(pos) 删除指定位置的元素
str_list = ['a', 'b', 'c'] # 创建一个字符串列表
# str_val = str_list.pop(100) # IndexError: pop index out of range
str_val = str_list.pop(0)
print(str_val) # a
print(str_list) # ['b', 'c']
# 13.reverse() 反转,见练习
# 14.count(ele)方法查看某个元素出现的次数
str_list = ['abc', 'b', 'c', "abc"]
print(str_list.count("abc")) # 2
三、列表的转换
其他形式转列表,采用list(otherType)的方法。可以转列表的类型有:字符串,元组等,如下代码所示:
str_01 = "abc"
print(list(str_01)) # ['a', 'b', 'c']
tuple_01 = (1, 2, 3)
print(list(tuple_01)) # [1, 2, 3]
列表转其他形式,通常看其他形式是怎么支持转换。其中比较灵活的是列表转字符串,采用join的方法,如下代码所示:
str_list = ["a", "b", "c"]
print(",".join(str_list)) # a,b,c
print("".join(str_list)) # abc
列表转字符串需要注意:
- join方法不是列表自带的方法,从调用来看,它是字符串里的方法
- join方法,如果列表中的元素不是字符串,会报错,如下代码所示:
num_list = [1, 2, 3]
# print("".join(num_list)) # TypeError: sequence item 0: expected str instance, int found
四、常见的练习题
常见的有关列表的练习题:
- 列表的反转
num_list = [1, 2, 3]
#方式一:调用列表的reverse()方法
num_list.reverse()
print(num_list) # [3, 2, 1]
# 方式二:使用切片
num_list = [1, 2, 3]
for num in num_list[::-1]:
print(num)
#如果需要[3, 2, 1]这样的格式
num_list = [1, 2, 3]
print("[", end="")
for num in num_list[:0:-1]:
print(num, end=", ")
if not num_list: # 如果列表为空
print("]")
else:
print("%d]" % num_list[0])
2.如何将列表拷贝到别一个列表中
nest_list = [1, 2, 3, ['a', 'b', 'c']]
new_nest_list = nest_list # 直接赋值拷贝
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c']]
new_nest_list.append("4")
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c'], '4']
print(nest_list) # [1, 2, 3, ['a', 'b', 'c'], '4']
# 直接赋值的拷贝会影响原来的列表,是一种浅拷贝
nest_list = [1, 2, 3, ['a', 'b', 'c']]
new_nest_list = nest_list[::] # 切片
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c']]
new_nest_list.append("4")
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c'], '4']
print(nest_list) # [1, 2, 3, ['a', 'b', 'c']]
nest_list[-1].append("d")
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c', 'd'], '4']
print(nest_list) # [1, 2, 3, ['a', 'b', 'c', 'd']]
# 使用切片,改变最外层对原列表没有影响,而内层是有影响的。这也是一种浅拷贝
nest_list = [1, 2, 3, ['a', 'b', 'c']]
new_nest_list = nest_list.copy() # 使用copy方法
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c']]
new_nest_list.append("4")
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c'], '4']
print(nest_list) # [1, 2, 3, ['a', 'b', 'c']]
nest_list[-1].append("d")
print(new_nest_list) # [1, 2, 3, ['a', 'b', 'c', 'd'], '4']
print(nest_list) # [1, 2, 3, ['a', 'b', 'c', 'd']]
# 使用copy,改变最外层对原列表没有影响,而内层是有影响的。这也是一种浅拷贝
# 如果想要实现深拷贝,需要使用copy模块中的deepcopy方法,详见<python中的深拷贝与浅拷贝>一文
3.列表的排序
列表的简单排序通常使用list.sort()方法。 但是这个sort方法使用会相对比较灵活。它的完整定义如下:
sort(*, key=None, reverse=False)
key指定一个函数名,并且这个函数只能接受一个参数
reverse指定排序的方式
x = ['bc', 'essmm', 'mdsfm', 'ss' ]
x.sort(key=str.lower)
print(x) # ['bc', 'essmm', 'mdsfm', 'ss']
y = [3, 2, 8, 0, 1]
y.sort(reverse=True)
print(y) # [8, 3, 2, 1, 0]
可以发现,使用list.sort()方法进行排序,是调用的列表中自带的方法,并且它是作用于原列表,并没有返回值。如果我们想要得到一个新的排好序的列表,则需要使用到sorted()方法。这个方法十分灵活,后面将再分专题进行介绍。
Python编程笔记 - 列表的更多相关文章
- Python编程笔记二进制、字符编码、数据类型
Python编程笔记二进制.字符编码.数据类型 一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存 ...
- Python编程之列表操作实例详解【创建、使用、更新、删除】
Python编程之列表操作实例详解[创建.使用.更新.删除] 这篇文章主要介绍了Python编程之列表操作,结合实例形式分析了Python列表的创建.使用.更新.删除等实现方法与相关操作技巧,需要的朋 ...
- python学习笔记——列表生成式与生成器
1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...
- python学习笔记——列表操作
python列表操作——增 append:追加一条数据到列表的最后 name = ["Zhangsan","XiongDa","Lisi"] ...
- Python自学笔记-列表生成式(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 列表生成式 列 ...
- Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器
一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...
- Python编程笔记(第二篇)二进制、字符编码、数据类型
一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存储单位,1bytes缩写为1B 1KB = 10 ...
- python基础笔记-列表
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可. def main(): ...
- Python学习笔记----列表、元组和字典的基础操作
文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...
随机推荐
- Ubuntu 报错 sudo: unable to resolve host
Ubuntu 在每次执行命令的时候,会报如下错误: $ sudo sudo: unable to resolve host iZ2zecsdy8flu603bmdg1bZ iZ2zecsdy8flu6 ...
- 链接文本在a标签内标签里也可以用driver.find_element_by_link_text
如: 也可用driver.find_element_by_link_text("账户登录").click()
- iOS OC利用imageview属性切出类似圆柱图形
效果一: 效果二: 上边的图形我也数不出来名字,,暂称圆柱正切图形吧,看到这样的需求似不似在想各种插件,各种切图方法了呢... UIImageView的属性可以轻松搞定 UIViewContentMo ...
- lograted日志切割脚本
root@op-testsetup-web3.idc1.yiducloud.cn:/etc/logrotate.d# cat etcd /home/work/docker/logs/etcd/prev ...
- 网口做trunk
首先发现这个服务器的两个网口对应的交换机端口 ailixin-asw2960>en ailixin-asw2960#terminal monitor 查看端口的状态 ailixin-asw296 ...
- lesson - 6 课程笔记
一.df 作用: 显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...
- df 命令详解
一.df 作用: 显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...
- 图解JQUERY尺寸及位置定义
最近在学习JQUERY的一些应用,接触到了JQUERY对于元素尺寸及位置定义,还有就是配合浏览器尺 寸及状态的计算所做出的一些动画特效.其实像这类JQUERY应用无外乎涉及这些属性的调用:innerH ...
- UTC 通用格式时间 转换为 时间戳,并格式化为2017-01-01 12:00:00
在使用阿里云oss获取文件列表是,发现时间格式是这样的 2016-09-20T13:45:04.000Z (尼玛,是什么鬼), 经过度娘的解答,发现这就是传说中的 UTC通用格式时间 问题来了,怎么转 ...
- class, classloder, dex 详解
class与dex文件 什么是class文件 class文件是一种能够被JVM识别,加载并且执行的文件格式. class文件的作用 class文件的作用是记录一个类文件的所有信息. 例如记住了当前类的 ...