列表

list 在 python 中具有非常强大的功能

定义

在python中,用方括号表示一个list:[]

在方括号里面,可以是 int,也可以是 str类型的数据,甚至也可以是Flase/True这样的布尔值

  • 列表可以无限大,就是说list里面可以容纳的元素数量无限,当然这是在硬件设备理想的情况下。

在 java 中有一个跟 list 相似的数据类型-数组,但是两者之间还是有差别的。

在 java 中,数组的元素必须是基本数据类型中某一个,也就是相同数据类型,要么全是int类型,要么全是char类型等。不能一个数组中既有int类型又有char类型。这是因为java中的数组需要提前声明,声明的时候就确定了里面的类型。但是list中的元素数据类型确实任意的,可以是int、str、list,dict等。

  • 列表、元组和字符串都是序列,序列的两个主要特点是索引操作符和切片操作符。

    • 索引操作符让我们可以从序列中抓取一个特定项目
    • 切片操作符让我们能够获取序列的一个切片,即一部分序列

索引和切片

在字符串中,索引号是以字符为单位确定的;而在list中,是以元素为单位

>>> a = 'hello.world'
>>> a[2]
'l'
>>> b = ['alpha','bete','gamma']
>>> type(b)
<type 'list'>
>>> b[2]
'gamma'
>>> b[:2] #跟str中的类似,切片的范围是:包含开始位置,到结束位置之前
['alpha', 'bete'] #不包含结束位置
>>> b[:2][1] #可以进行二次切片
'bete'

list和str两种类型的数据,有共同的地方,它们都属于序列(都是一些对象按照某个次序排列起来,这就是序列的最大特征),因此,就有很多类似的地方。如刚才演示的索引和切片,是非常一致的。

>>> a.index('h')
0
>>> b.index('bete')
1

如果从右边开始编号,右边第一个可以编号为-1,然后向左依次是:-2,-3,...,依次类推下来。这对字符串、列表等各种序列类型都是用。

>>> a[-1]
'd'
>>> b[-2]
'bete'

反转

这个功能在编程中经常会用到。

方法一

>>> b = ['alpha','bete','gamma']
>>> b[::-1]
['gamma', 'bete', 'alpha']
>>> b
['alpha', 'bete', 'gamma']

上述不管是str还是lst反转之后,再看原来的值,没有改变。这就说明,这里的反转,不是在“原地”把原来的值倒过来,而是新生成了一个值,那个值跟原来的值相比,是倒过来了。

方法二

使用 reversed() 函数

>>> b
['alpha', 'bete', 'gamma']
>>> reversed(b)
<listreverseiterator object at 0x059DC170>
>>> list(reversed(b))
['gamma', 'bete', 'alpha']

它返回一个可以迭代的对象

list基本操作

  • len() 查看list中的元素个数
>>> b
['alpha', 'bete', 'gamma']
>>> len(b)
3
  • + 连接两个列表
>>> b
['alpha', 'bete', 'gamma']
>>> len(b)
3
>>> c = ['apple','orange','banana']
>>> b + c
['alpha', 'bete', 'gamma', 'apple', 'orange', 'banana']
  • * 重复元素
>>> b*2
['alpha', 'bete', 'gamma', 'alpha', 'bete', 'gamma']
  • count 计算元素在列表中出现的次数
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> b.count('a')
0
>>> b.count('alpha')
1
  • in 成员运算符
>>> 'apple' in c
True
>>> 'apple' not in c
False
  • max()、min() 用法和str中的一样,需要注意的是如果元素不是int类型,都是按照字符在ascii编码中所对应的数字进行比较的。
>>> max(b)
'gamma'
>>> min(b)
'alpha'
  • append 将新的元素x追加到list的尾部。
>>> b
['alpha', 'bete', 'gamma']
>>> b.append('delta')
>>> b
['alpha', 'bete', 'gamma', 'delta']
>>> id(b)
94144512
>>> b.append('epsilon')
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> id(b)
94144512

从上面可以看出,生成一个新的列表后,列表的地址没有发生变化,因此,可以说明

列表是可以修改的。这种修改,不是复制一个新的,而是在原地进行修改。

  • insert 将元素插入到列表中,不是尾部
>>> b
['alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>> b.insert(0,'zaeta')
>>> b
['zaeta', 'alpha', 'bete', 'gamma', 'delta', 'epsilon']
>>>
  • list中的元素,不仅能增加,还能被删除。删除list元素的方法有两个,它们分别是:

    • pop 删除最后一个元素并返回这个元素
    >>> b
    ['zaeta', 'alpha', 'bete', 'gamma', 'delta', 'epsilon']
    >>> b.pop()
    'epsilon'
    >>> b
    ['zaeta', 'alpha', 'bete', 'gamma', 'delta']
    • remove 移除指定元素,没有返回值
    >>> b
    ['zaeta', 'alpha', 'bete', 'gamma', 'delta']
    >>> b.remove('delta')
    >>> b
    ['zaeta', 'alpha', 'bete', 'gamma']

python初步学习-python数据类型-列表(list)的更多相关文章

  1. python初步学习-python函数(一)

    python 函数 函数是组织好的,可重复使用的,用来实现单一或者相关联功能的代码段. 函数能提高应用的模块性和代码的重复利用率. 函数定义 python中函数定义有一些简单的规则: 函数代码块以de ...

  2. python初步学习-python数据类型之strings(字符串)

    数据类型-字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号(''或者"")来创建字符串 var1 = 'Hello World!' var2 = "P ...

  3. python初步学习-python数据类型之number(数值)

    数据类型之 Number python number 数据类型用于存储数值. 数据类型是不容许改变的. 这就意味着如果改变 number 数据类型的值,将重新分配内存空间. python支持四种不同数 ...

  4. python初步学习-python数据类型-集合(set)

    集合 在已经学过的数据类型中: 能够索引的,如list/str,其中的元素可以重复 可变的,如list/dict,即其中的元素/键值对可以原地修改 不可变的,如str/int,即不能进行原地修改 无索 ...

  5. python初步学习-python数据类型-字典(dict)

    字典 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起.注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息. 注意,你只 ...

  6. python初步学习-python文件操作

    文件 文件,在python中,他是一种类型的对象,类似前面已经学过的其他数据类型,包括文本的.图片的.音频的.视频的等等,还有不少没见过的扩展名的.事实上,在linux操作系统中,所有的东西都被保存到 ...

  7. python初步学习-python控制流

    语句书写规范 缩进在python语言书写中非常重要,如果缩进不规范,执行程序将会报错 引用维基百科中的叙述: Python開發者有意讓違反了縮排規則的程序不能通過編譯,以此來強迫程序員養成良好的編程習 ...

  8. python初步学习-Python模块之 re

    re 正则表达式 python正则表达式在线检验网站 python re正则表达式语法 匹配字符 语法 解释 表达式 匹配实例 . 匹配任意除"\n"以外的任何字符 a.c abc ...

  9. python初步学习-python 模块之 json

    json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...

随机推荐

  1. python模拟SQL语句操作文件

    1.需求 在文本界面输入SQL语句,查询相应的数据,例如输入下面的语句 print(''' 支持大小写的SQL语句查询,大写或者小写都可以 1. select * from db1.emp 2. se ...

  2. 3dContactPointAnnotationTool开发日志(三)

      今天的目的是把obj文件导到场景里.具体将制定路径的obj文件导进去我用的是这个方法.导进去后呈现的是一个黑色的影子.   导入后还想实现一下缩放功能,请看这个方法.缩放实现起来也很简单.   光 ...

  3. #Leetcode# 700. Search in a Binary Search Tree

    https://leetcode.com/problems/search-in-a-binary-search-tree/ Given the root node of a binary search ...

  4. IIS安装出现“安装程序无法复制文件CONVLOG.EX_”的解决办法

    重新安装了一次IIS,结果就在重新安装的时候,出现安装程序无法复制文件CONVLOG.EX_,上网找了找资料,是因为secedit.sdb 数据库的问题,既然是因为这个文件的问题,那么我们就可以使用w ...

  5. PHPcms企业黄页中,会员注册之后提示经营模式不得少于1个字符 的解决办法

    后台--模块- 黄页模块 ---  企业库 --- 字段 ---   经营模式 ---  字符长度取值范围 1  改为  0. 

  6. MVP开发模式的理解

    1.MVP是什么 如果从层次关系来讲,MVP属于Presentation层的设计模式.对于一个UI模块来说,它的所有功能被分割为三个部分,分别通过Model.View和Presenter来承载.Mod ...

  7. java 基础 --多态--009

    1, 多态:同一个对象(事物),在不同时刻体现出来的不同状态 2, 多态的前提: A: 要有继承关系 B: 要有方法的重写 C: 要有父类引用指向子类对象 父 f = new 子(); 3, 多态访问 ...

  8. 关于对 NUMA 理解(学习笔记,便于以后查阅)

    对NUMA的理解: NUMA是多核心CPU架构中的一种,其全称为Non-Uniform Memory Access,简单来说就是在多核心CPU中,机器的物理内存是分配给各个核的,架构简图如下所示: 每 ...

  9. [C/C++] C/C++错题集

    1. 解析: A:在GCC下输出:0    在VC6.0下输出:1 B:在GCC下输出:段错误 (核心已转储)    在VC6.0下输出:已停止工作,出现了一个问题,导致程序停止正常工作. C:正常 ...

  10. RT-thread v2.1.0修正版

    RT-Thread v2.1.0是v2.0.1正式版这个系列的bug修正版.RT-Thread v2.1.0修正的主要内容包括: 这个版本经历的时间比较长,并且原定的一些目标也还未能完成(更全的POS ...