四种数据结构:

列表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打印出来,其实这里面也仅仅是包含了所有的标点符号!@#$$%%%^&*

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

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

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

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

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

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

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

  2. python数据结构之栈与队列

    python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...

  3. python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)

    python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...

  4. 《python for data analysis》第五章,pandas的基本使用

    <利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...

  5. Python数据结构之单链表

    Python数据结构之单链表 单链表有后继结点,无前继结点. 以下实现: 创建单链表 打印单链表 获取单链表的长度 判断单链表是否为空 在单链表后插入数据 获取单链表指定位置的数据 获取单链表指定元素 ...

  6. Python 标准库 -> Pprint 模块 -> 用于打印 Python 数据结构

    使用 pprint 模块 pprint 模块( pretty printer ) 用于打印 Python 数据结构. 当你在命令行下打印特定数据结构时你会发现它很有用(输出格式比较整齐, 便于阅读). ...

  7. Python数据结构和类型--解压序列赋值多个变量

    Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...

  8. [Python数据结构] 使用 Circular List实现Queue

    [Python数据结构] 使用 Circular List实现Queue 1. Queue队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体 ...

  9. [Python数据结构] 使用List实现Stack

    [Python数据结构] 使用List实现Stack 1. Stack 堆栈(Stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型(ADT),其特殊之处在于只能允许在阵列的一端进 ...

  10. Python数据结构同Json类型数据相互转换的用法

    在做Python接口自动化的时候,经常要用到Python数据结构同Json类型数据相互转换来供我们做进一步的验证提供数据,在此做个记录和总结 Python数据结构同Json类型数据相互转换的函数有:j ...

随机推荐

  1. python debug open_files

    主要是遇到 Error 24, too many open files. 下面这种方法可以debug打开了哪些文件. import __builtin__ openfiles = set() oldf ...

  2. 【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow

    Bullcow 总时间限制: 12000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB [描述] 一年一度的展会要来临了,农民约翰想要把N(1 <= N <= 10 ...

  3. [转]Spring配置之OpenSessionInViewFilter

    参考: OpenSessionInViewFilter作用及配置:http://www.yybean.com/opensessioninviewfilter-role-and-configuratio ...

  4. CentOS下OpenVPN实现公网IP映射到内网(iptables转发功能)(转)

    说明:这种方案的实现前提是必须要有一台拥有公网IP的电脑,OpenVPN搭建过程很普通,关键技术在于iptables的转发.搭建教程可能有点旧了,可以只看iptables的关键点技术. 方案背景: 公 ...

  5. Run-Time Check Failure #0

    Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is ...

  6. C#读取Windows日志

    管理-->事件查看器     可以查看[应用程序].[安全].[系统]等分类的日志 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...

  7. selenium+python自动化88-批量操作循环点击报错:Element not found in the cache - perhaps the page has changed since it was looked up

    前言 selenium定位一组元素,批量操作循环点击的时候会报错:Element not found in the cache - perhaps the page has changed since ...

  8. Netty游戏服务器之一

    所谓磨刀不误砍柴工,所以在搭建netty游戏服务器之前,我们先要把要准备的东西做好. 首先进入netty的官网下载最新版本的netty的jar包,http://netty.io/downloads.h ...

  9. 【LaTeX】E喵的LaTeX新手入门教程(4)图表

    这里说的不是用LaTeX画图,而是插入已经画好的图片..想看画图可以把滚动条拉到底.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础 ...

  10. linq直接执行sql语句

    1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该&quo ...