列表:处理一组有序项目的数据结构
一、基本操作
1、列表运算符
list1=[2,3,4,5,6,7,8]
print len(list1)
print [1,2]+[3,4]
print ['Hi']*4
print 4 in list1
for i in list1:
print i
list2=list1
list3=list1[:]
print list2 is list1 TRUE
print list3 is list1 FALSE
shoplist = ['apple','mongo','carrot','banana']
2、新增元素
shoplist.append('rice')
print u'新购物清单',shoplist
结果:新购物清单 ['apple', 'mongo', 'carrot', 'banana', 'rice']
3、删除一个元素
list1=[1,2,3,4,5,6,7]
list1.remove(3) 值操作,没有返回值
del list1[2] 下标操作
list1.pop(2) 下标操作,有返回值
4、比较两个列表中的元素是否相等
cmp(list1,list2)
1,0,-1 返回值
list1 == list2
str(list1) == str(list2)
5、取出列表中的最大元素:两种方法
max(list1)
list1.sort() list1[-1]
6、插入一个元素
list1.insert(2,1024) 在下标是2的位置插入1024元素
7、合并列表
listA=[1,2,3]
listB=[9,4,5]
listA.extend(listB)
或者 listA = listA+listB
print listA
结果:[1, 2, 3, 9, 4, 5]
8、二维列表
listC=[[1,2,3],[21,22,23]]
print u'第一个元素',listC[0]
print u'第一个元素',listC[0][0]
结果:
第一个元素 [1, 2, 3]
第一个元素 1
9、统计列表[1,2,3,4,5,6,3,4,5,6,3]中3出现的次数,不少于两种方法
list1.count(3)
sum=0
for i in list1:
if i == 3:
sum +=1
print sum
10、判断某个变量是否属于某一类
if isinstance(listC,list):
print‘ok’
结果:ok
或者:if type(listC) == list:
11、反转列表
list1=list(reversed(list1))
list1.reverse() 直接修改了list1,不需要再给list1赋值
list1=list1[::-1]
获取元素的下标
list1.index(454)
for i in xrange(len(list1)):
if list1[i] == 454:
print i
break
二、高级应用
1、切片
说明:
listA[startponit : endPonit :step(步长)],切片之后得到一个新的列表
startPoint:endPoint 前闭后开
(1)切片操作,非常重要
listA=[1,2,3,4,5,6]
print listA[0:4]
结果:[1, 2, 3, 4]
print listA[0:4:2]
结果:[1, 3]
(2)步长为负数, 实现逆序输出
print listA[::-1]
结果:[6, 5, 4, 3, 2, 1]
2、列表变为字符串
listB=['a','b','c']
print ''.join(listB)
结果:abc
3、列表生成器
(1)第一种 range(a:b:c)
list1=range(10)
print list1
结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list2=range(2,10)
print list2
结果:[2, 3, 4, 5, 6, 7, 8, 9]
list3=range(2,10,2)
print list3
结果:[2, 4, 6, 8]
(2)第二种
list4=[x*x for x in range(10)]
print list4
结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
list3 = [m+n for m in 'ABC' for n in 'XYZ']
结果:AX,AY,AZ,BX,BY,BZ,CX,CY,CZ
list1 = [1,2,3,4]
list2 = [2*i for i in list1 if i>2]
list3 = [m+n for m in 'ABC' for n in 'XYZ']
dict4 ={'x':'A','y':'b','z':'C'}
list4 = [k+'='+v for k,v in dict4.items()]
L = ['Hello','World','IBM','Apple']
list5 = [s.lower() for s in L]
4、sort()方法 排序
sort(cmp=None,key=None,reverse=False)
cmp:默认通过ascii值比较,可定义使用其他的值进行比较
cmp:为一个定制的比较函数,接受两个参数,并且如果第一个参数小于第二个参数,则返回一个负数,大于则返回一个整数,等则返回0。默认值为None。
key:默认列表中的一个元素。通过什么去比较,可以自定义函数 key的使用场景比较多
reverse:默认升序,reverse=True,逆序
eg:
list1=[(1,5,3),(1,1,2,3,4),(1,6)]
def L(tup):
return len(tup)
list1.sort(key=L,reverse=True)
print list1
eg:list1 = [(-1,5,3),(-5,3,6,3),(1,1,2,4,5,6),(2,9),(-2,10)],使用元组的第一个元素大小比较来实现 list 的排序,逆序排列。
list1 = [(-1,5,3),(-5,3,6,3),(1,1,2,4,5,6),(2,9),(-2,10)]
def L(tup):
return abs(tup[0])
list1.sort(cmp=cmp,key=L,reverse=True)
print list1
- (python)数据结构------列表
一.数字的处理函数 (一)int() 取整数部分,与正负号无关,举例如下: print(int(-3.6), int(-2.5), int(-1.4)) print(int(3.6), int(2.5 ...
- Python常见数据结构--列表
列表 Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片.加.乘.检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最下的元素的方法. ...
- Python基本数据结构--列表
列表: 1.有序的集合: 2.通过偏移来索引,从而读取数据: 3.支持嵌套: 4.可变的类型: 列表的操作: 1.切片: a = [1,2,3,4,5,6,7] 正向索引 反向索引 默认索引 2.添加 ...
- Python笔记——基本数据结构:列表、元组及字典
转载请注明出处:http://blog.csdn.net/wklken/archive/2011/04/10/6312888.aspx Python基本数据结构:列表,元组及字典 一.列表 一组有序项 ...
- Python常用数据结构(列表)
Python中常用的数据结构有序列(如列表,元组,字符串),映射(如字典)以及集合(set),是主要的三类容器 内容 序列的基本概念 列表的概念和用法 元组的概念和用法 字典的概念和用法 各类型之间的 ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
- Python学习02 列表 List
Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...
- [0x00 用Python讲解数据结构与算法] 概览
自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...
- 第三章 Python容器:列表、元组、字典与集合
数据结构的分类依据?基本的"数组"在python中是列表, 数据结构的作用?容器,盛放数据,是由原子组成的分子.可以将一群数据进行整合.拆分.重排. 3.2 列表 列表是啥?顺 ...
- Python 迭代器和列表解析
Python 迭代器和列表解析 1)迭代器 一种特殊的数据结构,以对象形式存在 >>> i1 = l1.__iter__() >>> i1 = iter(l1) 可 ...
随机推荐
- WPF中批量进行验证操作
//ref,out private void CheckTextboxNotEmpty(ref bool isOK, params TextBox[] textboxes) { foreach (Te ...
- 移动端rem匹配
Rem是相对于根元素font-size大小的单位 记inphone5屏幕宽度是 320px font-size16px 1rem=16px <html> <head> ...
- MySQL - UNION 和 UNION ALL 操作符
UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SE ...
- 获取页面URL参数值
JavaScript function GetParams(urlAddress) { var i, strLength, str, keyName, keyValue, params = {}, u ...
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- CodeForces 781E Andryusha and Nervous Barriers 线段树 扫描线
题意: 有一个\(h \times w\)的矩形,其中有\(n\)个水平的障碍.从上往下扔一个小球,遇到障碍后会分裂成两个,分别从障碍的两边继续往下落. 如果从太高的地方落下来,障碍会消失. 问从每一 ...
- 连续小波变换CWT(2)
如果让你说说连续小波变换最大的特点是什么?多分辨分析肯定是标准答案.所谓多分辨分析即是指小波在不同频率段会有不同的分辨率.具体表现形式,我们回到前一篇文章的第一个图, 图一 对应的信号为 低频时(频率 ...
- 手机端sticker布局,底部按钮在屏幕底部
<template> <div class="product-detail-container"> <div class="detail&q ...
- day 16 JS DOM 继续
为什么有jquey了还学DOM ? 因为JQuey 是大而全,可能有10k 但是我们用到的只有1k 网站小没事,网站大流量就是问题 所以大网站都是自己用DOM 实现一个类似于JQuey 的适合自己 ...
- loj2052 「HNOI2016」矿区
学习一发平面图的姿势--ref #include <algorithm> #include <iostream> #include <cstdio> #includ ...