今天来总结下python3.4版本列表的一些操作方法。

列表(list):  

  1、列表就像一个线性容器,但是比C++的 lis t扩展多得多,列表里的元素可以是相同类型,也可以包含各种类型,比如列表里嵌套另一个列表

  2、list的索引是也是从0开始,但也可以从后访问,L1[-1] 表示L1中的最后一个元素对列表可以进行切片

  3、列表可以做加法,做乘法,字符串也可以看做一个字符的列表

  4、in语句,判断一个对象是否在一个字符串/列表/元组里
  5、not 语句表示对后面的否定
  6、len 可以检测字符串/列表/元祖/字典的元素个数
  7、max 可以返回最大元素,min 返回最小元素

  8、len(List)返回List的长度
  del list[i]删除列表list中指定的第i+1个变量
  9、切片:切片指的是抽取序列的一部分,其形式为:list[start:end:step]。其抽取的规则是:一般默认的步长为1,但也可自定义。 切片的操作类似于对函数的调用,返回值一个新的列表,

  切片 L1[ x : y : z ] 是半开闭区间(z通常不用写),如L1[1:3] 返回的是一个从 L1[1] 开始到 L1[2] 结束的列表,不包含L1[3],x 不写表示从头开始,y 不写表示直到列表结束,

  z 用于表示步长, 默认是1, 可以认为是在这个区间里每 z 个元素取一个(取第一个),可以是负数,表示从后到前遍历 

 

list 的方法:

1、append(x)追加到链尾
2、clear()清空列表元素
3、copy()列表的浅拷贝
4、extend(L)追加一个列表,等价于+=
5、insert(i,x)在位置i插入x,其余元素向后推,如果i大于列表长度,就在最后添加,如果i小于0,就在最开始添加
6、remove(x)删除第一个值为x的元素,如果不存在会抛出异常
7、reverse()反转序列
8、pop([i])删除位置 i 的元素并将它返回,默认可以不写 i ,删除最后一个元素,不存在会出错素。pop 会做两件事:删除 list 的最后一个元素,然后返回删除元素的值。
9、index(x)返回x在列表中第一次出现的位置,不存在则抛出异常
10、count(x)返回x出现的次数
11、sort(key=None, reverse=False) 将原列表排序,返回None,有两个可选参数,key 和 reverse,默认为升序排列

>>> L1 = [1,2,3,4,5,6]
>>> L1[1:3]
[2, 3]
>>> L1[:3]
[1, 2, 3]
>>> L1[1:]
[2, 3, 4, 5, 6]
>>> L1[-3:-1]
[4, 5]
>>> L2 = L1[:]
>>> L2
[1, 2, 3, 4, 5, 6]
>>> L1[::2]
[1, 3, 5]
>>> L1[::-1]
[6, 5, 4, 3, 2, 1]

>>> L1 = [1,2]
>>> L2 = [3,4]
>>> L1 + L2
[1, 2, 3, 4]
>>> 5 * L1
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

>>> L1
[1, 2, 3, 4, 2]
>>> 3 in L1
True
>>> 5 in L1
False
>>> 3 not in L1
False
>>> 5 not in L1
True
>>> len(L1)
5
>>> max(L1)
4
>>> min(L1)
1

>>> #赋值
>>> L1[1] = 5
>>> L1
[1, 5, 3, 4, 2]
>>> #删除
>>> del L1[1]
>>> L1
[1, 3, 4, 2]
>>> #分片赋值
>>> L1[2:] = [6,7,8]
>>> L1
[1, 3, 6, 7, 8]
>>> L1[1:3] = []
>>> L1
[1, 7, 8]

>>> L1
[8, 7, 2, 1]
>>> L1.sort()
>>> L1
[1, 2, 7, 8]
>>> L1.sort(reverse = True)
>>> L1
[8, 7, 2, 1]
>>> L1 = ['a','ccc','abcd','bc','cd','abc']
>>> L1.sort(key = len)
>>> L1
['a', 'bc', 'cd', 'ccc', 'abc', 'abcd']

python中对list去重的多种方法
  今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。

  问题就是对一个list中的id进行去重,去重之后要保证顺序不变。

1、直观方法
  最简单的思路就是:
  >>>ids = [1,2,3,3,4,2,3,4,5,6,1]
  >>>news_ids = []
  >>>for id in ids:
      if id not in news_ids:
          news_ids.append(id)
  >>>print news_ids
  这样也可行,但是看起来不够爽。

2、用set
  另外一个解决方案就是用set和sort:

  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>news_ids = list(set(ids))
  >>>news_ids.sort(key=ids.index)

  >>>new_ids

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

3、使用itertools.grouby
  文章一开始就提到itertools.grouby, 如果不考虑列表顺序的话可用这个:
  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>ids.sort()
  >>>it = itertools.groupby(ids)
  >>>for k, g in it:
      print k
  关于itertools.groupby的原理可以看这里:http://docs.python.org/2/library/itertools.html#itertools.groupby

4、用reduce
  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>func = lambda x,y:x if y in x else x + [y]
  >>>reduce(func, [[], ] + ids)
  [1, 4, 3, 2, 5, 6]
  其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y]
  思路其实就是先把ids变为[[], 1,4,3,......] ,然后在利用reduce的特性。

python数据类型-----列表的更多相关文章

  1. 7 Python 数据类型—列表

    列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置, ...

  2. Python数据类型--列表(list)

    Python中列表对应的表示形式是"[]".列表中的元素可以是任何数据类型. 本文以List=[i for i in range(20)]为例进行论述:等价于List=[0, 1, ...

  3. python初步学习-python数据类型-列表(list)

    列表 list 在 python 中具有非常强大的功能 定义 在python中,用方括号表示一个list:[] 在方括号里面,可以是 int,也可以是 str类型的数据,甚至也可以是Flase/Tru ...

  4. 【Python】(六)Python数据类型-列表和元组,九浅一深,用得到

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文分十个章节介绍数据类型中的列表(list)和元组(tuple),从使用说到底层实现,包您满意 干货满满,建议收藏,需要用到时常看看. 小伙伴们 ...

  5. python 数据类型---列表使用 之一

    列表的表现形式:其中的元素可以使任何数据类型,像 字符串,数字, 字典, 列表,变量 等任何类型 age = 28 name = ["Frank", "Lee" ...

  6. python数据类型—列表(增改删查,统计,取值,排序)

    列表是最常用的数据类型之一,通过列表可以对数据实现方便的存储,修改等操作. 先声明一个空列表: >>> names = [] >>> names [] 可以存多个值 ...

  7. Python数据类型-列表(list)增删改查

    1.添加元素 添加单个元素:使用append(object)函数可以为列表添加单个元素,参数object为对象:也就是说所有Python的对象都可以添加到列表中. 添加多个元素(合并列表):使用ext ...

  8. python数据类型 列表+元组

    一:列表 二:元组 一:列表list: 1.列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除: 2.列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素: 3.列表的所有元素放在 ...

  9. python 数据类型---列表使用之三

    1. 判断列表中是否存在一个元素: "in" 的使用 list = ['Frank', 99, 'is',78, 7,3,4,'smart'] print(99 in list) ...

随机推荐

  1. 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 间接调用 Python 实现

    现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过 ...

  2. 去西交大考PAT认证

    这周六去了西交大去考浙大PAT认证,为什么要写这个博客呢.因为...我不是西交大的学生,找考场就花了我很多时间,各种搜都找不到PAT的考场在哪. 在此记录一下,希望有有缘人再去西交大考试,可以少走点弯 ...

  3. sed-awk命令详解

      第2章 ***********sed***********. 1目  录 2.1 -------sed命令小结及小结图---- 1 2.2 -------第几行---------- 2 2.3 - ...

  4. DFS——hdu1016Prime Ring Problem

    一.题目回顾 题目链接:Prime Ring Problem Problem Description A ring is compose of n circles as shown in diagra ...

  5. lintcode-101-删除排序数组中的重复数字 II

    101-删除排序数组中的重复数字 II 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 样例 标签 数组 两根指针 脸书 思路 参照上一篇博客lintcode-100 ...

  6. SQL 视图 局部变量 全局变量 条件语句 事务 触发器

    一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...

  7. Python执行Linux系统命令的4种方法

    http://www.jb51.net/article/56490.htm (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system( ...

  8. Java学习全攻略-->阅读官方文档

    一直感觉Java的官方文档有些杂乱,最近特意整理了一下,仅供参考. 入口 Oracle官方文档入口:http://docs.oracle.com/.下级页面这边只整理了JavaEE跟JavaSE的文档 ...

  9. jQuery插件jquery.fullPage.js

    简介如今我们经常能看到全屏网站,尤其是国外网站.这些网站用几幅很大的图片或者色块做背景,再添加一些简单的内容,显得格外的高端大气上档次,比如 iPone 5C 的介绍页面.QQ浏览器的官方网站.百度史 ...

  10. NOIP2018复赛 游记

    Day -? 停了两个星期的课,逃了一场期中考试.随便做了点题并不知道有什么用.见不到夫人很难受. Day 0 依然没有跟学校走.据说今年合肥居然不下雨,印象里每年这个时候来到这里都是阴雨连绵……突然 ...