列表[list]用中括号[]表示,处理一组有序项目的数据结构,列表的类型是可变的数据类型,类型是list

列表是可变/线程不安全的

# type(a) = list  利用type判断元素离线

# 切片是左闭右开[m,n)的

# 取得方向由第三个参数的正负决定,不变的还是原来列表的下标

# -1代表最后一个元素

# ::代表到最后

#列表时可变的

#可以利用id查看列表在内存中的存储位置

列表的创建+查询

列表的查:切片,index, count

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
# print(id(name))
# 切片是左闭右开的形式,左右只是取的方向而已,不变的还是列表下标
# 打印所有元素
#print("打印所有元素:", name)
print("打印所有元素:", name[0:name.__len__()])
print("打印所有元素(默认到最后):", name[0:])
# 打印第一个
print("打印第一个: ", name[0])
# 取出后面2个
print("取出后面2个: ", name[3:5])
# 取出world后面的所有元素,默认取到最后一个
print("取出world后面的所有元素: ", name[1:])
# -1代表最后一个元素
print("-1代表最后一个元素: ", name[-1])
# 去除最后一个元素
print("去除最后一个元素:", name[0:-1])
# 虽然超出了最大范围,但是默认是取到最后一个元素
print("超出了最大范围,但默认取到最后一个元素:", name[1:10])
# 间隔一个取一个元素(默认间隔是1,就是每一个元素都取到)
print("间隔一个取一个元素(默认间隔是1,就是每一个元素都取到):", name[0::2])
# 从右向左取值,取出全部元素
print("从右向左取值name[-1::-1],取出全部元素:", name[-1::-1])
# 注意:如果用到了0下标,则会少一个值
print("从右向左取值name[-1:0:-1],取出全部元素:", name[-1:0:-1])
# 从右向左取值(间隔一个取一个)
print("从右向左取值,间隔一个取一个:", name[-1::-2])
# 只打印 hhh,world
print("只打印 hhh,world:[3::-2]", name[3::-2])
print("只打印 hhh,world:[-2::-2]", name[-2::-2])
# 默认是+1的方向
print("默认是+1的方向:", name[-2::])

count 方法统计某个元素在列表中出现的次数

name = ['a', 'b', 'c', 'a']
print(name.count('a')) --> 2

index:  根据元素内容返回元素所在的位置,如果有2个相同的元素,以第一个为准

name = ['z', 'a', 'b', 'c', 'a']
print('a的第一个位置是:', name.index('a')) # -->1
# 强制取出第二个a的位置
print(name[name.index('a')+1::].index('a') + name.index('a')+1)

嵌套的列表练习

boy = [['ftl', 12, 'male'], ['hhh', 13, 'female'], ['pig', 0, 'unknow']]
print("info of HHH: ", boy[1])
print("age of HHH: ", boy[1][1])

for循环的特殊打印

te = [['Shell', 150], ['Python', 600], ['Mysql', 200], ['Oracle', 400]]
print("整体打印1:", te)
print("整体打印2(用循环):")
for i in te:
print(i)
print('te的大小:', len(te))
print("[k,v]的使用:")
for i, v in te:
print(i, v)

利用list类来创建列表: 可以看出跟使用小括号,中括号还是大括号关系不大,构造出来的都是列表

name = list([1, 2, 3, 4, 5, 6])
print(name)
name2 = list((7, 8, 9, 10, 11, 12))
print(name2)
name3 = list({13, 14, 15, 16, 17, 18})
print(name3)

利用列表生成器来生成列表,也可以放置函数进行操作

# 列表生成器

a = [ x*2 for x in range(10)]  # 找出X并且对X进行操作
print(a) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 在函数内操作

def plus(x):
return x ** 3
# b = [plus(x) for x in [1, 3, 5]] 是个序列就好
b = [plus(x) for x in range(10)]
print(b) # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]

列表的特殊赋值:注意元素的个数和列表里面的数量相同

c = ['hello', 'world']
x,y = c
print(x, y) # hello world

列表的增加:append,insert,extend

append默认是插入到列表尾部,修改的是索引值

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
print('--------------------------------------------------------------------------------')
print("Append修改前:", name[0:])
# append默认是插入到列表尾部
name.append('python')
print("Append修改后:", name[0:])
print('--------------------------------------------------------------------------------')
print("Insert修改前:", name[0:])
# 修改的是索引值
name.insert(0, "Java")
print("Insert修改后:", name[0:])
print('--------------------------------------------------------------------------------')

extend 方法可以在列表的末尾一次性追加另一个序列中的多个值。

extend 方法修改了被扩展的列表,而原始的连接操作(+)会返回一个全新的列表, 且不影响原来的列表。

name = ['a', 'b', 'c']
name2 = ['e', 'f', 'g']
name2.extend(name)
print("name :", name)
print("name2.extend(name):", name2)
name3 = ['x', 'y', 'z']
print("name + name3:", name + name3)

列表的修改:

同时修改多个元素,需要用列表来再次赋值

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
# 修改2017为2018
print("修改前:", name[0:])
name[2] = '2018'
print("修改后:", name[0:])
print('--------------------------------------------------------------------------------')
# 修改hello world 为 Java Python
print("修改前:", name[0:])
name[0:2]=['Java', 'Python']
print("修改后:", name[0:])

特殊情况:如果替换和被替换的数量对不上,就会删除那个位置的元素

name = ['a', 'b', 'c', 'd', 'e']
#name[1:4] ==> b c d
print(name)
name[1:4] = ['B', 'C']
print(name)

列表的删除:remove pop  del

remove删除的是元素,不是下标

pop   删除的是下标,而且会返回删除的元素,什么都不写默认删除最后一个值

del   是一个函数,既可以删除某个元素,也可以删除list对象

clear  清空,但是还是保留原来的列表属性

Remove:

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
# 删除2017
print("修改前:", name[0:])
# remove的是元素,不是下标
# name.remove(1) --> ValueError: list.remove(x): x not in list
name.remove('2017')
# name.remove(name[2]) -->效果相同,相当于用列表取出元素后删除
print("修改后:", name[0:])

Pop: 删除下标,而且可以拿到删除后的内容

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
# 删除2017
print("修改前:", name[0:])
year=name.pop(2)
print("修改后:", name[0:])
print("year:", year)
#特殊:默认删除最后一个元素
name.pop()
print(name)

Del: 是一个函数,既可以删除某个元素,也可以删除list对象

# list = ['hello', 'world', '2017']  会有告警,因为list是关键字
name = ['hello', 'world', '2017', 'hhh', 'ftl']
# 删除2017
print("修改前:", name[0:])
del name[2]
print("修改后:", name[0:]) # 删除name对象
del name
print("删除name对象后:", name[0:])

其他

reverse 方法将列表中的元素反向存放

name = ['a', 'b', 'c']
name.reverse()
print(name)

sort 方法用于在原位置对列表进行排序,默认升序

name = ['z', 'a', 'b', 'c', 'a']
name.sort()
print(name)
name.sort(reverse=True)
print(name)

Python学习---Python下[列表]的学习的更多相关文章

  1. Python学习---Python下[元组]的学习

    元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...

  2. python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍

    目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...

  3. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  4. 零基础入门学习Python(13)--元组:戴上了枷锁的列表

    前言 这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表 我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验.但是呢,凡是拥有大权利的 ...

  5. python学习笔记整理——列表

    Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...

  6. Python下的OpenCV学习 01 —— 在Linux下安装OpenCV

    一.OpenCV简要介绍 OpenCV是一个跨平台的计算机视觉库,可以运行在Windows.Linux.MacOS等操作系统上.OpenCV提供了众多语言的接口,其中就包含了Python,Python ...

  7. python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍

    目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...

  8. “笨方法”学习Python笔记(1)-Windows下的准备

    Python入门书籍 来自于开源中国微信公众号推荐的一篇文章 全民Python时代,豆瓣高级工程师告诉你 Python 怎么学 问:请问你目前最好的入门书是那本?有没有和PHP或者其他语言对比讲Pyt ...

  9. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

随机推荐

  1. 高并发和多线程——Java内存模型

    个人理解: 1.并发编程分为三个核心:分工.同步.互斥 2.CPU.内存.I/O存在速度差异问题. 3.线程切换导致原子性问题.编译优化导致有序性问题.缓存导致可见性问题. 4.Java内存模型规范了 ...

  2. restsharp 组件调用返回 gbk 编码的api,中文乱码解决方法。(restsharp response 中文乱码 gbk)

    最近要调一个restful风格的api 用了 一个开源第三方组件,组件还是蛮好用的, 支持直接按参数定义实体类,然后发起请求之前直接 addobject 的方式就把请求参数给添加进去了, 解码的时候可 ...

  3. MySQL插入记录 insert

    一.insert insert tb_name [(col_name,......)] {values | value} ({expr | default } ....... ) , ( ... ) ...

  4. 将Mysql的一张表导出至Excel格式文件

    将Mysql的一张表导出至Excel格式文件 导出语句 进入mysql数据库,输入如下sql语句: select id, name, age from tablename into outfile ' ...

  5. Maven 常见知识点整理

    认识 Maven Maven 的作用? 1.添加第三方jar包 2.解决jar包之间的依赖关系 3.获取第三方jar包 4.将项目拆成多个工程模块 Maven 是什么? 是Apache软件基金会组织维 ...

  6. 微信小程序wx:for循环

    最近做微信小程序碰到了一些问题,和wx:for循环相关,wx:for有很多用途,例如可以用于swiper中图片的循环,也就是所谓的轮播图,也可以用于其它的循环,可以大大地减少代码量. 但wx:for. ...

  7. PHP学习4——面向对象

    主要内容: 创建类 成员方法 构造方法 析构方法 封装 继承 接口 多态 静态成员 常用关键字 常用魔术方法 从PHP5开始引入了面向对象的全部机制,面向对象的特性符合软件工程的3个目标:重用性,灵活 ...

  8. 怎样在ado.net中存取excel和word呢?

    办公软件指可以进行文字处理.表格制作.幻灯片制作.图形图像处理.简单数据库的处理等方面工作的软件.当然啦,这也包括了word.Excel以及PPT等.现在我们就一起来学习一下:怎样在ado.net中存 ...

  9. npm proxy报错处理

    npm经常抽风,动不动安装一个模块就这样了: 提示是否设置了正确的代理地址,解决方法网上有很多,有说取消代理.重新设置代理等等,最简单粗暴解决: 删除nodejs安装路径下面的npmrc文件,再使用淘 ...

  10. 六、mybatis分页插件集成

    本文基于上一篇“集成mybatis”内容 1.添加依赖 <!-- mybatis-pageHelper --> <dependency> <groupId>com. ...