python学习之数据结构

列表

list=[val1,val2,val3,val4]
  • 列表中每一个元素是可变的;
  1. 列表中每个元素是有序的,每个元素都有相应的位置;
  2. 列表可以容纳python中任何对象

查询(只接受位置索引[0])

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']#创建一个列表
print(Weekday[0])#索引0位置的元素

添加insert(插入一个元素)extend(添加多个元素)

fruit = ['pineapple','pear']
fruit.insert(1,'grape')#列表中插入一个元素用.insert()方法
print(fruit)
fruit[0:0] = ['Orange']#也可以用这种方式插入
print(fruit)

删除remove()或者del关键字实现

fruit = ['pinapple','pear','grape']
fruit.remove('grape')#用.remove()方法实现删除
print(fruit)
del fruit[0:2]#还可以用del关键字来删除
print(fruit)

替换

fruit[0] = 'Grapefruit'#索引变量被后面赋值
print(fruit)

检索

periodic_table = ['H','He','Li','Be','B','C','N','O','F','Ne']
print(periodic_table[0])#索引出0位置
print(periodic_table[-2])#索引出-2位置元素
print(periodic_table[0:3])#索引出0、1、2位置的元素
print(periodic_table[-10:-7])#索引出-10、-9、-8位置的元素
print(periodic_table[-10:])#索引出-10到最后的元素
print(periodic_table[:9])#索引出0到8位置上的元素
print(periodic_table['H'])#报错可得知列表索引必须是整数或者是片,而不是字符串即用元素索引出对应的位置

字典(键值对)

dict={key:val1,key2:val2}
  1. 字典中的数据必须以键值对的形式出现;
  2. 逻辑上,键不能重复,但值可以;
  • 字典中的键是不可变的,不可修改;值是可以变,修改的,可以是任何对象;

字典可以添加NASDAQ_code[‘YOU’]=’Youku’或者.update()

NASDAQ_code = {'BIDU':'Baidu','SINA':'Sina'}
NASDAQ_code['YOKU'] = 'Youku'#字典添加一个用法
print(NASDAQ_code)
NASDAQ_code.update({'FB':'Facebook','TSLA':'Tesla'})#字典添加多个用.update()方法
print(NASDAQ_code)

删除del()

del NASDAQ_code['FB']#字典删除del关键字
print(NASDAQ_code)

索引(只能索引关键词NASDAO_code[‘YOU’])

NASDAQ_code['TSLA']#字典的索引,是用列表的方法索引关键字

但字典不能切片

NASDAQ_code[1:4] # WRONG!字典不能进行切片

元组(固定的列表)

tuple=(val1,val2,val3,val4)
不可以添加、删除。可以索引

letters = ('a','b','c','d','e','f','g')#元组的形式(X,Y)
letters[0]#元组的索引和列表类似

集合

set={val1,val2,val3,val4}
集合元素无序,不重复,用来判断从属关系
集合可添加、删除,集合运算,但不可以索引

a_set = {1,2,3,4}#创建集合
a_set.add(5)#添加集合元素.add()
print(a_set)
a_set.discard(5)#删除集合元素.discard()
print(a_set)

数据结构的一些技巧

多重循环

sorted(list)方法实现列表元素排序

num_list = [6,2,7,4,1,3,5]
print(sorted(num_list))#sorted()分类整理函数
sorted(num_list,reverse=True)#默认参数reverse为false,现在实现的倒序

for a,b in zip(num,str)俩个列表

num = [6,2,7,4]
str = ['a','b','c','d']
for a,b in zip(num,str):
    print(b,'is',a)#很容易格式错误expected an indented block期待在约束块中

推导式

10个元素装入列表
普通写法

a = []
for i in range(1,11):
    a.append(i)#用.append()方法+for循环实现1到10的加入列表
print(a)

列表递推式

b = [i for i in range(1,11)]#用列表解析式实现1到10的加入列表
print(b)

为了深刻立即list = [item for item in iterable]举几个栗子吃吃就知道了

a = [i**2 for i in range(1,10)]#i**2为我们要放在列表中的元素,i的取值范围为1到9,既可以预见结果为1,4,9...81 
c = [j+1 for j in range(1,10)]#2,3,4....10
k = [n for n in range(1,10) if n % 2 ==0]#n为1到9范围内的偶数
z = [letter.lower() for letter in 'ABCDEFGHIGKLMN']#字符串按小到大排列

字典的递推式实现

d = {i:i+1 for i in range(4)}#字典中键从0到3的一个添加
g = {i:j for i,j in zip(range(1,6),'abcde')}#字典中键i从1到5,值j从a到e的组合添加
g = {i:j.upper() for i,j in zip(range(1,6),'abcde')}#.upper()方法实现字母小写变大写的功能

循环列表时获取元素索引

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for num,letter in enumerate(letters):#用enumerate()枚举函数,将列表的元素位置枚举出来
    print(letter,'is',num + 1)

综合项目:词频率统计

import string#引入字符串模块
path = '/Users/sharymo/Desktop/Walden.txt'
with open(path,'r') as text:
    words = [raw_word.strip(string.punctuation).lower() for raw_word in text.read().split()]#去掉前面的标点符号,并把首字母改写成小写
    words_index = set(words)#将列表转换成集合,并把其中的重复去掉
    counts_dict = {index:words.count(index) for index in words_index}#创建一个以单词为key,以频数为值的字典
for word in sorted(counts_dict,key=lambda x: counts_dict[x],reverse=True):
    print('{} -- {} times'.format(word,counts_dict[word]))#打印整理好的函数

这次学的都蛮实用的
萌新求多多支持_

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

推荐阅读更多精彩内容

  • 本文为《爬着学Python》系列第九篇文章。 从现在开始算是要进入“真刀真枪”的Python学习了。之所以这么说,...
    SyPy阅读 2,127评论 0 14
  • python 数据类型 Python中的数据结构的说明 在Python中,不需要提前声明,当给一个变量赋值的时候就...
    So_ProbuING阅读 678评论 0 2
  • 本节要介绍的是Python里面常用的几种数据结构。通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组...
    小黑y99阅读 65,187评论 0 9
  • 单一入口机制 指对某个网站的访问都必须通过某个特定的脚本文件,比如我们经常看到某个网站的所有页面都是index.p...
    _chuuuing_阅读 228评论 0 0
  • 思念如殇,充斥天地,纵横激荡。西望斜阳,霞彩昏黄。爱马踽踽,啸啸哀伤。纵使江山如画,灿烂辉煌,然空山寂寞,难抑悲怆!
    时光随风尽成灰阅读 477评论 0 1