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
复制代码

四、Python编程学习常见的练习题

1. 列表的反转

# 方式一:调用列表的reverse()方法
num_list = [1, 2, 3]
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编程学习笔记会在下期为大家继续更新!

转载于:https://juejin.im/post/5d2d84946fb9a07eee5f0063

Python编程学习笔记:列表相关推荐

  1. python编程学习笔记列表_python编程:从入门到实践学习笔记-函数

    Python学习资料或者需要代码.视频加Python学习群:516107834 定义函数 举个简单的例子 由上所示,关键字def定义一个函数,后面跟着函数名以及用来输入参数的括号,定义以冒号结束,而p ...

  2. python编程学习笔记(三)

    五.if语句 1.示例 cars = ['audi','bmw','subaru','toyota'] for car in cars:if car=='bmw':print(car.upper()) ...

  3. python编程学习笔记⑦-1函数

    函数是带名字的代码块 8.1定义函数 使用关键字def 告诉python你要定义一个函数. def greet_user():#()是必要的print("Hello!") gree ...

  4. python编程学习笔记_python编程:从入门到实践学习笔记-Django开发用户账户(一)...

    让用户能够输入数据(表单) 在创建用户账户身份验证系统之前,先添加几个页面,让用户能偶输入数据.添加新主题.添加新条目以及编辑既有条目. 添加新主题 1.用于添加主题的表单 创建一个forms.py文 ...

  5. python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 fi ...

  6. 大数据第二阶段Python基础编程学习笔记(待完善)

    大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...

  7. Python学习笔记 | 列表和字典

    基于Python3版本的学习. 列表 用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作"元素". 每个元素之间都要用英文逗号隔开. list1=['小明',18,1.70 ...

  8. 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程

    8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...

  9. Python 学习笔记 列表 range() xxx XXX

    Python 学习笔记 列表 range() xxx XXX print("-" * 30) for value in range(1, 5):print(value)number ...

  10. Python 学习笔记 列表 xxx XXX

    Python 学习笔记 列表 xxx XXX bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles) p ...

最新文章

  1. boost::proto模块实现简单的算术表达式求值器的测试程序
  2. php ip 省份,PHP有没有生成国内各省份IP地址的类库?
  3. MC新手入门(二十八)------ 顺序结构程序
  4. win台式找不到计算机管理,win10系统计算机右键-管理打不开windows找不到文件的解决方法...
  5. 12017.linux设置串口支持非标准波特率614400
  6. C++中的内存分配new()
  7. 洛谷 P4017 最大食物链计数
  8. 软件工程简答题和应用题
  9. python中国地图数据下载_中国地图数据可视化(Python+selenium+Matplotlib),PythonSeleniumMatplotlib...
  10. 手游运营基础知识大全
  11. mysql数据库怎么该用户名和密码_如何修改MySql数据库的用户名和密码?
  12. css选择最后一个元素
  13. Objective-C仿映客跑车动画
  14. 什么是数据中心SOP、MOP、EOP?
  15. 教你5个大咖用的CMD命令,让人一看你就是个电脑高手
  16. 第二十二届全国青少年信息学奥林匹克联赛初赛
  17. DSP上玩玩视频雨滴检测与消除
  18. redis的保存key,value出现\xac\xed\x00\x05t\x00\x0b的解决
  19. 中国铝型材行业营销趋势及需求前景预测报告(新版)2022-2027年
  20. 徐小平:不做人生规划,你离挨饿只有三天

热门文章

  1. 拓端tecdat|TensorFlow 2.0 keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
  2. 拓端tecdat|R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
  3. 拓端tecdat|R语言markov switching model马尔可夫转换分析研究水资源
  4. 计算机操作系统笔记(二)
  5. java图片转ASCII码_将图片转化成对应的Ascii字符图片
  6. 计算机应用可分为哪两类,计算机应用简答题
  7. ChainIDE 3. 使用truffle部署合约
  8. layui中input、select、date日历的onchange事件无效 解决方法总结
  9. thinkphp 接收小程序json数组
  10. java执行复杂linux,解决java使用Runtime.exec执行linux复杂命令不成功问题