python之高级变量类型笔记(一)

一.列表

a=[2,3,4,5]

b=['a','b','c']

list=['data','frog',4,6]
列表是python中最常用的数据类型,也可以称之为数组。python中的数组和数学上的数组,理解上可能有些不一样。数学中的数组一般都是数值型的元素,python列表中的元素,可以是同一个数值变量类型,比如都是int型,或者都是str型;也可是不一样的数值型变量类型,比如上述的list列表。甚至列表表中还可以嵌套另外一个列表:list2=['data','frog',[4,6],5,9]。列表的嵌套方式,可以创造多维或者更高维度的数组,在numpy和pandas库中的运用非常广泛。列表在numpy和pandas的实际运用中,还会有一些差别。numpy中主要是便于处理列表相关的科学计算过程,因此numpy中的列表一般是纯数值型的多,可以类比线性代数的矩阵。而在pandas中最常见的用DataFrame创建的二位列表,其中的元素一般都包含多种数据类型,即不单单只是数值型的列表,此处可以类比于EXCEL表格。
列表(list)、元组(tuple)、字典(dict)、集合(set)的区别:

都是序列,可以储存多种类型的数据。列表用[]创建,元组用()创建,而字典用{}以键值对的方式创建。集合通过{}或set()函数创建,但创建一个空集合必须用set()函数创建,而不能用{}创建,{}表示创建一个空字典。集合与列表的区别在于:集合无排序,无重复值,无索引。

二.添加列表元素

列表.insert(索引,数据)

列表.append(数据)

列表.extend(iterable)

insert可以指定索引,在该索引后插入元素,如果索引值过大,则在最后末尾插入元素。

append无需索引参数,直接在末尾插入一个元素,

extend表示在末尾插入列表中的元素。与append不同的是,append插入列表时,是把列表当一个元素加在末尾,而extend插入列表时,是把列表中的元素插入末尾。

a=[2,3,4,5]
list=['data','frog',4,6]
list.append(a)
list

输出结果:['data', 'frog', 4, 6, [2, 3, 4, 5]]

a=[2,3,4,5]
list=['data','frog',4,6]
list.extend(a)
list

输出结果:['data', 'frog', 4, 6, 2, 3, 4, 5]

有趣的一点是,如果在extend函数中直接传入一个多字符字符串,也会被当成是列表来处理:

a=[2,3,4,5]
list=['data','frog',4,6]
list.extend('data')
list

输出结果:['data', 'frog', 4, 6, 'd', 'a', 't', 'a']

此时正确的操作办法是需要把'data'这个字符串当成是一个元素放在列表中,extend才会把data当成一个元素插入列表:

a=[2,3,4,5]
list=['data','frog',4,6]
list.extend(['data'])
list

输出结果:['data', 'frog', 4, 6, 'data']

再看下用append的区别:

a=[2,3,4,5]
list=['data','frog',4,6]
list.append('data')
list.append(['data'])
list

输出结果:['data', 'frog', 4, 6, 'data', ['data']]

三.删除列表

del 列表[索引]
指定元素索引删除
列表.remove(数据)
删除元素值,如果有多个值,只删除第一个,如果删除的值不存在会报错
列表.pop()
也是指定索引删除,不指定索引则删除最后一个
列表.clear()
清空列表

list=['data','frog',4,6]
del list[0]
list

输出结果:['frog', 4, 6]

del 删除元素时,是按索引来删除,如果需要按删除某个数据,则可以用index函数来指定数据的索引值:

list=['data','frog',4,6]
del list[list.index('frog')]
list

输出结果:['data', 4, 6]

用remove()删除:

list=['data','frog',4,6]
list.remove(4)
list

输出结果:['data', 'frog', 6]
删除元素不存在时,报错:

list=['data','frog',4,6]
list.remove(9)
list

输出结果:ValueError: list.remove(x): x not in list

remove()删除时,只允许传一个数值:

list=['data','frog',4,6]
list.remove(4,6)
list

输出结果:TypeError: remove() takes exactly one argument (2 given)

list=['data','frog',4,6,7,6]
list.remove(['4','6'])
list

输出结果:ValueError: list.remove(x): x not in list

用pop()删除:

list=['data','frog',4,6]
list.pop()
list

输出结果:['data', 'frog', 4]

list=['data','frog',4,6,7,6]
list.pop(10)
list

输出结果:IndexError: pop index out of range

pop()和remove()一样,如果被删除的数据有多个索引值或有多个数据值,都只删除最后一个元素:

list=['data','frog',4,6,7,6]
list.pop(list.index(6))
list

输出结果:['data', 'frog', 4, 7, 6]

['data', 'frog', 4, 7, 6] 
list=['data','frog',4,6,7,6]
list.remove(6)
list

输出结果:['data', 'frog', 4, 7, 6]

clear()删除:

list=['data','frog',4,6,7,6]
list.clear()
list

输出结果:[]

四.修改元素

直接指定元素索引重新赋值

list=['data','frog',4,6,7,6]
list[0]='1'

输出结果:['data',1,4,6,7,6]

五.元素排序

列表.sort(reverse=true/false)
sorted(列表,参数设置) sorted(iterable, cmp=None, key=None, reverse=False)
iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。

默认时按升序排列,字符串和数值不能一起排序,会报错
sort()和sorted()的区别:sort()会修改原数据,而sorted()不修改原数据

如果需要按列表内含数值的字符串排序,可以用正则表达式,设置参数,具体操作先遗留。。。。
如果需要按字符串排序。。。。。问题先遗留

import re
list= [ 'ch1.txt', 'ch10.txt', 'ch1.txt', 'ch3.txt', 'ch11.txt' ]
list.sort(key = lambda x:int(re.match('\D+(\d+)\.txt',x).group(1)))
list

输出结果:['ch1.txt', 'ch1.txt', 'ch3.txt', 'ch10.txt', 'ch11.txt']

用sorted函数与正则表达式排序:

import re
s = ['1.dat','10.dat','5.dat']
new = sorted(s,key = lambda i:int(re.match(r'(\d+)',i).group()))
new

输出结果:['1.dat', '5.dat', '10.dat']

六.查询数据

列表.index(数据)
列表.count(数据)
len(列表)
判断元素是否存在于列表:
if 数据 in 列表
在pandas 的DataFrame构建的列表中,可以直接用列表==数据来判断,直接返回一个bool值列表。该操作常常用于数据过滤与数据筛选。

拓展练习:加强结合正则表达式的元素排序练习

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 752评论 0 2
  • 1.基本使用 1.1 数据类型 常用数据类型 Common Data Types 其他类型 Others 1.2 ...
    suwi阅读 1,351评论 0 3
  • 列表 1.1 列表的定义 ​ 我们先来看看几个例子,看什么叫做列表 a=[2,4,5]b=['data','fro...
    Carver_阅读 281评论 0 0
  • 修改 Application\App\Controller\ShopController.class.php 文件...
    NoFacePeace阅读 197评论 0 0
  • 今天去外地一家书院参加了一个公益讲座,老公开车带我,开了一个多小时终于到达。本来是冲着我的老师王金宪先生去的,结果...
    悦来悦好_阅读 596评论 0 2