python-数据结构Data Structure1

四种数据结构:

列表list = [val1,val2,val3,val4]
字典dict = {key1:val1,key2:val2}
元组tuple = (val2,val2,val3,val4)
集合set = {val1,val2,val3,val4}

一。列表

列表可以装入Python中所有的对象,例子

all_in_list = [

  1, #整数

  1.0 #浮点数

  ‘a worf‘ #字符串

  print(), #函数

  True, #布尔值

  [1,2] #列表中套列表

  (1,2),#元组

  {‘key‘:‘value‘}#字典

]

例子2列表的增删改查

fruit = [‘pineapple‘,‘pear‘]

fruit.insert(1,‘grape‘)

print(fruit)

例子3位置插入

fruit[0:0] = [‘Orange‘]

print(fruit)

例子3删除列表中元素的方法是remove():

fruit = [‘pinapple‘,‘pear‘,‘grape‘]

fruit.remove(‘grape‘)

print(fruit)

例子4替换修改其中的元素

fruit[0] = ‘Grapefruit‘

删除的另外一种方法del

del fruit[0:2]

print(fruit)

二。字典(Dictionary)

例子

NASDAQ_code = {

  ‘BIDU‘:‘Baidu‘,

  ‘SINA‘:‘Sina‘,

  ‘YOKU‘:‘Youku‘,

}

字典的增删改查

添加

NASDAQ_code = {‘BIDU‘:‘Baidu‘,‘SINA‘:‘Sina‘}

NASDAQ_code[‘YOKU‘] = ‘Youku‘

print(NASDAQ_code)

列表中用来添加多个元素的方法extend(),在字典中也有对应的添加多个元素的方法update():

NASDAQ_code.update({‘FB‘:‘Facebook‘,‘TSLA‘:‘Tesla‘})

删除字典中的元素则使用del方法:

del NASDAQ_code[‘FB‘]

注意字典是不可以进行切片的

三。元组Tuple  稳固版的列表

letters = (‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘)

letters[0]

四。集合Set

可以通过集合去判断数据的从属关系,有时还可以通过集合吧数据结构中重复的元素减掉。

注意集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除:

a_set = {1,2,3,4}

a_set.add(5)

a_set.discard(5)

五。数据结构的一些技巧

正序排列

num_list = [6,2,7,4,1,3,5]

print(sorted(num_list))

逆序排列

sorted(num_list,reverse=True)

同时需要两个列表排序,可以用Zip函数

for a,b in zip(num,str):

  print(b,‘is‘,a)

推导式

将10个元素要装进列表中,普通写法

a = []

for i in range(1,11):

  a.append(i)

列表解析方式

b = [i for i in range(1,11)]

列表解析式不仅非常方便,并且在执行效率上要远远胜过前者

import time

a = []

t0 time.clock()

for i in range(1,20000):

  a.append(i)

print("time.clock() - t0,seconds process time")

t0 = time.clock()

b = [i for i in range(1,20000)]

print("time.clock() - t0,seconds process time")

得到结果

8.999999999998592e-06 seconds process time

0.0012320000000000005 seconds process time

a = [i**2 for i in range(1,10)]

c = [j+1 for j in range(1,10)]

k = [n for n in range(1,10) if n %2 == 0]

z = [letter.lower() for letter in ‘ABCDEFGHIGKLMN‘ ]

字典推导式,满足键 - 值 两个条件才能达成:

d = {i:i+1 for i in range(4)}

g = {i:j for i,j in zip(range(1,6),‘abcde‘)}

g = {i:j.upper() for i,j in zip(range(1,6),‘abcde‘) }

例子

letters = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘]

for num,letter in enumerate(letters):

  print(letter,‘is‘,num+1)

结果为a=1,b=2...

六。综合项目

使用split方法将字符串中的每个单词分开,得到独立的单词:

lyric = ‘The night begin to shine,the night begin to shine‘

words = lyric.split()

结果[‘The‘,‘night‘,‘begin‘,‘to‘,‘shine‘]

词频统计,count方法来统计重复出现的单词:

path = ‘/Users/Hou/.../Walden.txt‘

with open(path,‘r‘) as text:

  words = text.read().split()

  print(words)

  for word in words:

    print(‘{}-{} times‘.format(word,words.count(word)))

结果结论

1,有些带标点符号单词被单独统计次数

2,有些单词不止一次展示了出现的次数

3,,由于Python对大小写敏感,开头大写的单词被单独统计了

调整统计方法,对单词做些预处理:

import string

path = ‘/Userss/Hou/.../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)

for word in sorted(counts_dict,key=lambda x: counts_dict[x],reverse=True):

  print(‘{} --{} times‘.format(word,counts_dict[word]))

第1行,引入了一个新的模块,string. 其实这个模块的用法很简单

string.punctuation打印出来,其实这里面也仅仅是包含了所有的标点符号[email protected]#$$%%%^&*

第4行,在文字的首位去掉了连着一起的标点符号,并把首字母大写的单词转化成小写;

第5行,将列表用set函数转换成集合,自动去掉其中所有重复的元素

第6行,创建了一个以单词为键key,以出现频率为值value的字典

第7-8行,打印整理后的函数,其中key=lambda x: counts_dict[x]叫做lambda表达式,可以暂且理解为以字典中的值为排序的参数

时间: 2024-10-25 02:56:42

python-数据结构Data Structure1的相关文章

Python学习日志之Python数据结构初识

Python数据结构初识: 一.Python数据结构概述 1.何为数据结构 在程序中,同样的一个或几个数据组织起来,可以有不同的组织方式,也就是不同的存储方式,不同的组织方式就是不同的结构,我们把这些数据组织在一起的结构就叫做数据结构 例如: 有一串字符串:"abc",我们将它重新组织一下,比如通过list()函数将"abc"变成["a","b","c"],那么这个时候数据发生了重组,重组之后的结构就发生了

[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列

python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构时,这些高级的数据结构可能给我们以迷惑. 比如,使用list实现queue的时候,入队操作append()时间复杂度可以认为是O(1),但是,出队操作pop(0)的时间复杂度就是O(n). 如果是想利用python学学数据结构的话,我觉得还是自己实现一遍基本的数据结构为好. 1.链表 在这里,我想使

Python For Data Analysis -- Pandas

首先pandas的作者就是这本书的作者 对于Numpy,我们处理的对象是矩阵 pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like),和矩阵的区别就是,二维表是有元数据的 用这些元数据作为index更方便,而Numpy只有整形的index,但本质是一样的,所以大部分操作是共通的 大家碰到最多的二维表应用,关系型数据库中的表,有列名和行号,这些就是元数据 当然你可以用抽象的矩阵来对这些二维表做统计,但使用pandas会更方便  

Python For Data Analysis -- IPython

IPython Basics 首先比一般的python shell更方便一些 比如某些数据结构的pretty-printed,比如字典 更方便的,整段代码的copy,执行 并且可以兼容部分system shell , 比如目录浏览,文件操作等   Tab Completion 这个比较方便,可以在下面的case下,提示和补全未输入部分 a. 当前命名空间中的名字 b.对象或模块的属性和函数 c. 文件路径   Introspection, 内省 ?,在标识符前或后加上,显示出对象状况和docst

python数据结构与算法——链表

具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向链表的实现: http://www.cnblogs.com/yupeng/p/3413800.html 我这里只实现了单链表的类型,代码也相对精简一点: 先构造关于节点的类: 1 class Node: 2 def __init__(self,data=None,next=None): 3 self

python数据结构树和二叉树简介

一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树的递归定义:树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:(1)有且仅有一个特定的称为根(Root)的结点:(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree). 二.二叉树的定义 二叉树是由n(n≥0)个结点组成的有限集合.每个结点最多有两个子树的有序树

Python数据结构

1. 元组(tuple) 元组由不同的元素组成,每个元素可以储存不同类型的数据,如字符串.数字甚至元组.元组是写保护的,即元组创建后不能再做任何修改操作. 1.1 元组的创建 Tuple(元组)由一系列元素组成,所有元素被包含在一对圆括号中.创建元组时可以不指定元素个数,但一旦创建后就不能修改长度 元组的创建格式如下:tuple_name = (元素1,元素2,-) 如果创建空元组,只需要一对空的圆括号:tuple_name = () 如果创建的元组只包含一个元素,应在元素后面加上逗号,以区分元

Python数据结构——散列表

散列表的实现常常叫做散列(hashing).散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的.需要元素间任何排序信息的操作将不会得到有效的支持. 散列表是普通数组概念的推广.如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术. 当实际存储的关键字比可能的关键字总数较小时,采用散列表就比较直接寻址更为有效.在散列表中,不是直接把关键字用作数组下标,而是根据关键字计算出下标,这种 关键字与下标之间的映射就叫做散列函数. 1.散列函数

python数据结构与算法 38 分析树

分析树 树的结构完成以后,该是时候看看它能做点什么实事儿了.这一节里,我们研究一下分析树.分析树能够用于真实世界的结构表示,象语法或数学表达式一类的. 图1 一个简单语句的分析树 图1所示是一个简单语句的层级结构,把语句表示为树结构可以让我们用子树来分析句子的组成部分. 图2 ((7+3)?(5?2))的分析树 我们也可以把数学表达式如((7+3)?(5?2))表示为分析树,如图2.此前我们研究过完全括号表达式,这个表达式表达了什么呢?我们知道乘法的优先级比加减要高,但因为括号的关系,在做乘法之

Python For Data Analysis -- NumPy

NumPy作为python科学计算的基础,为何python适合进行数学计算,除了简单易懂,容易学习 Python可以简单的调用大量的用c和fortran编写的legacy的库   The NumPy ndarray: A Multidimensional Array Object ndarray,可以理解为n维数组,用于抽象矩阵和向量 Creating ndarrays 最简单的就是,从list初始化, 当然还有其他的方式,比如, 汇总,     Data Types for ndarrays