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打印出来,其实这里面也仅仅是包含了所有的标点符号!@#$$%%%^&*
第4行,在文字的首位去掉了连着一起的标点符号,并把首字母大写的单词转化成小写;
第5行,将列表用set函数转换成集合,自动去掉其中所有重复的元素
第6行,创建了一个以单词为键key,以出现频率为值value的字典
第7-8行,打印整理后的函数,其中key=lambda x: counts_dict[x]叫做lambda表达式,可以暂且理解为以字典中的值为排序的参数
python-数据结构Data Structure1的更多相关文章
- python数据结构与算法——链表
具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...
- 《python for data analysis》第五章,pandas的基本使用
<利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...
- Python数据结构之单链表
Python数据结构之单链表 单链表有后继结点,无前继结点. 以下实现: 创建单链表 打印单链表 获取单链表的长度 判断单链表是否为空 在单链表后插入数据 获取单链表指定位置的数据 获取单链表指定元素 ...
- Python 标准库 -> Pprint 模块 -> 用于打印 Python 数据结构
使用 pprint 模块 pprint 模块( pretty printer ) 用于打印 Python 数据结构. 当你在命令行下打印特定数据结构时你会发现它很有用(输出格式比较整齐, 便于阅读). ...
- Python数据结构和类型--解压序列赋值多个变量
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...
- [Python数据结构] 使用 Circular List实现Queue
[Python数据结构] 使用 Circular List实现Queue 1. Queue队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体 ...
- [Python数据结构] 使用List实现Stack
[Python数据结构] 使用List实现Stack 1. Stack 堆栈(Stack)又称为栈或堆叠,是计算机科学中一种特殊的串列形式的抽象数据类型(ADT),其特殊之处在于只能允许在阵列的一端进 ...
- Python数据结构同Json类型数据相互转换的用法
在做Python接口自动化的时候,经常要用到Python数据结构同Json类型数据相互转换来供我们做进一步的验证提供数据,在此做个记录和总结 Python数据结构同Json类型数据相互转换的函数有:j ...
随机推荐
- 1.1(SQL学习笔记)SQL基础
一.SELECT 建表及数据填充语句下载:链接: https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg 提取码: 3wy4 SELECT用于指定检索返回的结果 ...
- SpringBoot整合Mybatis多数据源 (AOP+注解)
SpringBoot整合Mybatis多数据源 (AOP+注解) 1.pom.xml文件(开发用的JDK 10) <?xml version="1.0" encoding=& ...
- Activit(活动)实践--知晓当前活动
实际上,我们可能用的不是自己写的项目,而是从别人那里接手过来的代码,因为你刚进公司就有一个新项目开始的概率十分低.阅读别人代码时会有一个很头疼的问题,就是当你需要在某个界面上修改一些非常简单的东西时, ...
- 84. CYD啃骨头(背包问题)
3111 CYD啃骨头 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description CYD吃饭时有N个骨头可以啃,但C ...
- CDOJ 1281 暴兵的卿学姐 构造题
暴兵的卿学姐 题目连接: http://acm.uestc.edu.cn/#/problem/show/1281 Description 沈宝宝又和卿学姐开始玩SC2了! 自从沈宝宝学会新的阵型后,就 ...
- 域名做CDN来通过隐藏服务器真实IP的方法来防止DDoS攻击(转)
隐藏服务器真实IP是解决问题最好和最快的方法,但只针对小流量,大流量同样会扛不住. 服务器前端加CDN中转,比如阿里云.百度云加速.360网站卫士.加速乐.安全宝等,如果资金充裕的话,可以购买高防的盾 ...
- C#-java RSA加密解密
using Org.BouncyCastle.Math; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Securi ...
- [转载]android工程中引入另一个工程中的资源
原文地址:android工程中引入另一个工程中的资源作者:87fayuan 在项目中可能遇到这样的问题:项目过大,于是细分为N个子模块来做,每个模块都是不同的工程.涉及到activity传数据时,可以 ...
- 十大流行linux
你可曾知道Linux的魅力或威力来自哪里?那就是,由于众多发行版百花齐放,Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力.Linux发行版可谓是形形色色,它们旨在 ...
- 容器set和multiset
一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include <set> ...