第一部分:  

 #列表a = [11,22,24,29,30,32]  

 #1 把28插入到列表的末端
>>> a.append(28)
>>> a
[11, 22, 24, 29, 30, 32, 28] #2 在元素29后面插入元素57
>>> a.insert(4,57)
>>> a
[11, 22, 24, 29, 57, 30, 32, 28] #3 把元素11修改成6
>>> a[0]=6
>>> a
[6, 22, 24, 29, 57, 30, 32, 28] #3 删除元素32
>>> a.pop(-2)
32
>>> a
[6, 22, 24, 29, 57, 30, 28] #4 对列表从小到大排序
>>> a.sort()
>>> a
[6, 22, 24, 28, 29, 30, 57] ##习题2: #列表b = [1,2,3,4,5] #1 用2种方法输出下面的结果: [1,2,3,4,5,6,7,8]
>>> b+[6,7,8]
[1, 2, 3, 4, 5, 6, 7, 8] >>> b.extend([6,7,8])
>>> b
[1, 2, 3, 4, 5, 6, 7, 8]
#2 用列表的2种方法返回结果:[5,4]
>>> b[-4:-6:-1]
[5, 4] >>> d=[]
>>> d.append(b[-4])
>>> d.append(b[-5])
>>> d
[5, 4] #3 判断2是否在列表里
>>> 2 in b
True ##习题3: #b = [23,45,22,44,25,66,78] #用列表解析完成下面习题: #1 生成所有奇数组成的列表 >>> b=[23,45,22,44,25,66,78]
>>> b
[23, 45, 22, 44, 25, 66, 78]
>>> [i for i in b if i % 2==1]
[23, 45, 25] #2 输出结果: ['the content 23','the content 45'] >>> ["the content %s" % m for m in b[0:2:1]]
['the content 23', 'the content 45'] #3 输出结果: [25, 47, 24, 46, 27, 68, 80]
>>> [m+2 for m in b]
[25, 47, 24, 46, 27, 68, 80] ##习题4: #用range方法和列表推导的方法生成列表: #[11,22,33] >>> range(11,34,11) #range(起始,结束+1,步长)
[11, 22, 33]
>>> [m *11 for m in range(1,4,1)]
[11, 22, 33]
##习题5: #已知元组:a = (1,4,5,6,7) #1 判断元素4是否在元组里
>>> 4 in a
True #2 把元素5修改成8
>>> a(2)=8
SyntaxError: can't assign to function call
>>> c=list(a)
>>> c
[1, 4, 5, 6, 7]
>>> c[2]=8
>>> c
[1, 4, 8, 6, 7]
>>> a=tuple(c)
>>> a
(1, 4, 8, 6, 7)
##习题6: #已知集合:setinfo = set('acbdfem')和集合finfo = set('sabcdef')完成下面操作: #1 添加字符串对象'abc'到集合setinfo
>>> setinfo=set('abcdfem')
>>> setinfo
set(['a', 'c', 'b', 'e', 'd', 'f', 'm'])
>>> setinfo.add('abc')
>>> setinfo
set(['a', 'c', 'b', 'e', 'd', 'f', 'm', 'abc']) #2 删除集合setinfo里面的成员m
>>> setinfo.remove('m')
>>> setinfo
set(['a', 'c', 'b', 'e', 'd', 'f', 'abc']) #3 求2个集合的交集和并集
>>> finfo=set('sabcdef')
>>> finfo
set(['a', 'c', 'b', 'e', 'd', 'f', 's'])
>>> setinfo & finfo
set(['a', 'c', 'b', 'e', 'd', 'f'])
>>> setinfo | finfo
set(['a', 'c', 'b', 'e', 'd', 'f', 's', 'abc']) ##习题7: #用字典的方式完成下面一个小型的学生管理系统。 #1 学生有下面几个属性:姓名,年龄,考试分数包括:语文,数学,英语得分。 """
比如定义2个同学: 姓名:李明,年龄25,考试分数:语文80,数学75,英语85 姓名:张强,年龄23,考试分数:语文75,数学82,英语78
"""
>>> studentinfo={'liming':{'name':'LiMing','age':25,'score':{'chinese':80,'math':75,'english':85}}}
>>> studentinfo
{'liming': {'age': 25, 'score': {'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}}
>>> studentinfo['zhangqiang']={'age':25,'name':'ZhangQiang','score':{'chinese':75,'math':82,'english':78}}
>>> studentinfo
{'liming': {'age': 25, 'score': {'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}, 'zhangqiang': {'age': 25, 'score': {'math': 82, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}} #2 给学生添加一门python课程成绩,李明60分,张强:80分
>>> studentinfo['liming']['score']['python']=60
>>> studentinfo['liming']
{'age': 25, 'score': {'python': 60, 'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}
>>> studentinfo['zhangqiang']['score']['python']=80
>>> studentinfo['zhangqiang']
{'age': 25, 'score': {'python': 80, 'math': 82, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'} #3 把张强的数学成绩由82分改成89分
>>> studentinfo['zhangqiang']['score']['math']=89
>>> studentinfo['zhangqiang']
{'age': 25, 'score': {'python': 80, 'math': 89, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'} #4 删除李明的年龄数据
>>> del studentinfo['liming']['age']
>>> studentinfo
{'liming': {'score': {'python': 60, 'math': 75, 'chinese': 80, 'english': 85}, 'name': 'LiMing'}, 'zhangqiang': {'age': 25, 'score': {'python': 80, 'math': 89, 'chinese': 75, 'english': 78}, 'name': 'ZhangQiang'}} #5 对张强同学的课程分数按照从低到高排序输出。
>>> b=studentinfo['zhangqiang']['score'].values()
>>> b
[80, 89, 75, 78]
>>> b.sort()
>>> b
[75, 78, 80, 89] #6 外部删除学生所在的城市属性,不存在返回字符串 beijing
>>> studentinfo.pop('city','beijing') #若存在键名'city' 返回其属性 否则返回'beijing'
'beijing'
 第二部分:  

 一.已经字符串 s = "i,am,lilei",请用两种办法取出之间的“am”字符。
>>> s="i,am,lilei"
>>> s[2:4] #字符串切片
'am'
>>> s.split(',')[1]
'am'
更多关于split函数:http://blog.csdn.net/holyang_1013197377/article/details/49205065 二.在python中,如何修改字符串?
>>> s="i love php"
>>> s.replace('php','python')
'i love python' 三.bool("" == 2012) 的结果是什么。
>>> bool(""==2012)
False 四.已知如下变量
________
a = "字符串拼接1"
b = "字符串拼接2"
________ 1.请用四种以上的方式将a与b拼接成字符串c。并指出每一种方法的优劣。
a="string1"
b="string2"
c1=a+b #1不适合大量字符串拼接 c2="%s%s" % (a,b) #2受顺序限制 print 'format'
c3="{a}{b}" . format(a=a,b=b) #3 未受顺序限制 c4="".join([a,b]) #4 只要申请一次内存
print c4 2.请计算出新拼接出来的字符串长度,并取出其中的第七个字符。
lennum=len(c1.encode('utf-8'))
print c1.encode('utf-8')[6].encode('utf-8') 五.请阅读string模块,并且,根据string模块的内置方法输出如下几题的答案。 1.包含0-9的数字。
>>> print string.digits
0123456789 2.所有小写字母。
>>> print string.lowercase
abcdefghijklmnopqrstuvwxyz 3.所有标点符号。
>>> print string.punctuation
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 4.所有大写字母和小写字母。
>>> print string.ascii_uppercase
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>>> print string.lowercase
abcdefghijklmnopqrstuvwxyz 5.请使用你认为最好的办法将{1}-{4}点中的字符串拼接成一个字符串。
>>> string.digits+string.lowercase+string.uppercase+string.punctuation
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' strinfo = []
strinfo.append(string.digits)
strinfo.append(string.lowercase)
strinfo.append(string.punctuation)
strinfo.append(string.ascii_lowercase)
strinfo.append(string.ascii_uppercase)
print "".join(strinfo)
print '\n' strinfo = "%s%s%s%s%s" % (string.digits,string.lowercase,string.punctuation,string.ascii_lowercase,string.ascii_uppercase)
print strinfo 九.已知字符串
________ a = "i,am,a,boy,in,china"
________ 1.假设boy和china是随时可能变换的,例boy可能改成girl或者gay,而china可能会改成别的国家,你会如何将上面的字符串,变为可配置的。
>>> exp1="i,am,a,%(sex)s,in,%(country)s" % {'sex':'boy','country':'China'}
>>> print exp1
i,am,a,boy,in,China
>>> exp2="i,am,a,{sex},in,{country}".format (sex='girl',country='USA')
>>> print exp2
i,am,a,girl,in,USA 2.请使用2种办法取出其间的字符"boy"和"china"。
>>> print exp1[7:10]
boy
>>> print exp1.split(',')[3]
boy
>>> print exp1[-5:]
China
>>> print exp1.split(',')[-1]
China 3.请找出第一个"i"出现的位置。
>>> exp1.index('i')
0
>>> exp1.find('i')
0 4.请找出"china"中的"i"字符在字符串a中的位置。
>>> print exp1.find('i',exp1.find('China'))
16
>>> print exp1.rfind('i') #找第二个'i'字符
16 5.请计算该字符串一共有几个逗号。
>>> print exp1.count(',')
5 十.请将模块string的帮助文档保存为一个文件。
import sys
import string f=open('string_help.log','w')
sys.stdout=f
help(string)
f.close()
 1. 已知字符串 a = "aAsmr3idd4bgs7Dlsf9eAF",要求如下
1.1 请将a字符串的大写改为小写,小写改为大写。
print a.upper()
print a.lower() 1.2 请将a字符串的数字取出,并输出成一个新的字符串。
print ''.join([s for s in a if s.isdigit()])
#解释
[s for s in a if s.isdigit()]
l=[]
for s in a:
if s.isdigit():
l.append(s)
print l 1.3 请统计a字符串出现的每个字母的出现次数(忽略大小写,a与A是同一个字母),并输出成一个字典。 print a.count('a')
print dict([(x,a.count(x)) for x in set(a)])#set去重 1.4 请去除a字符串多次出现的字母,仅留最先出现的一个。例 'abcabb',经过去除后,输出 'abc'
a_list=list(a)
#print set(a_list) #set 去重 无序 字典和集合不可排序
set_list=list(set(a_list)) #去重以后转化为list
set_list.sort(key=a_list.index)#对去重后按照list原来排序
print ''.join(set_list) #拼接成字符串 1.5 请将a字符串反转并输出。例:'abc'的反转是'cba'
print a[::-1] 1.6 去除a字符串内的数字后,请将该字符串里的单词重新排序(a-z),并且重新输出一个排序后的字符 串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb) 1.要有小写字母a-z的排序
2.大小写相同的大写在前面 l=sorted(a)
#print l sort排序结果:字母数字分开排序
a_upper_list=[] #声明大写list
a_lower_list=[] #声明小写list
for x in l: #遍历排序过的list 将大小写分别存在两个list中
if x.isupper():
a_upper_list.append(x)
elif x.islower():
a_lower_list.append(x)
else:
pass for y in a_upper_list: #遍历大写list
y_lower=y.lower()
if y_lower in a_lower_list:
a_lower_list.insert(a_lower_list.index(y_lower),y) #把大写list中的字母插入到 原来这个位置是该字母小写的位置 不覆盖 顺延 index定位
#print a_lower_list
print ''.join(a_lower_list) #拼接成字符串输出 1.7 请判断 'boy'里出现的每一个字母,是否都出现在a字符串里。如果出现,则输出True,否则,则输 出False.
search='boy'
b=set(a)
b.update(search) #update特性 如果b中有的字符 search中的字符就插不进去
print len(set(a))==len(a) 1.8 要求如1.7,此时的单词判断,由'boy'改为四个,分别是 'boy','girl','bird','dirty',请判断如上这4个字符串里的每个字母,是否都出现在a字符串里。
search=['boy','girl','bird','dirty']
b=set(a)
print b
for i in search:
b.update(i)
print len(set(a))==len(a) 1.9 输出a字符串出现频率最高的字母
#set 去重
l=([(x,a.count(x))for x in set(a)])
l.sort(key=lambda k:k[1],reverse=True) #两次排序 :指定排序 第一个键 reverse从大向小排序
print l[0]
print l 2.一文件的字节数为 102324123499123,请计算该文件按照kb与mb计算得到的大小。
size=102324123499123
print '%s kb' % (size>>10)
print '%s mb' % (size>>20) 3.已知 a = [1,2,3,6,8,9,10,14,17],请将该list转换为字符串,例如 ''.
a = [1,2,3,6,8,9,10,14,17]
print str(a)[1:-1].replace(', ','')

转载:http://blog.csdn.net/holyang_1013197377/article/details/49185605

Python基本数据结构的更多相关文章

  1. python 与数据结构

    在上面的文章中,我写了python中的一些特性,主要是简单为主,主要是因为一些其他复杂的东西可以通过简单的知识演变而来,比如装饰器还可以带参数,可以使用装饰类,在类中不同的方法中调用,不想写的太复杂, ...

  2. [0x00 用Python讲解数据结构与算法] 概览

    自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...

  3. Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET

    Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq 分类: Python 2012-09 ...

  4. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  5. 《用Python解决数据结构与算法问题》在线阅读

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  6. 用Python实现数据结构之二叉搜索树

    二叉搜索树 二叉搜索树是一种特殊的二叉树,它的特点是: 对于任意一个节点p,存储在p的左子树的中的所有节点中的值都小于p中的值 对于任意一个节点p,存储在p的右子树的中的所有节点中的值都大于p中的值 ...

  7. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

  8. python的数据结构分类,以及数字的处理函数,类型判断

    python的数据结构分类: 数值型 int:python3中都是长整形,没有大小限制,受限内存区域的大小 float:只有双精度型 complex:实数和虚数部分都是浮点型,1+1.2J bool: ...

  9. Python 基本数据结构

    Python基本数据结构 数据结构:通俗点儿说,就是存储数据的容器.这里主要介绍Python的4种基本数据结构:列表.元组.字典.集合: 格式如下: 列表:list = [val1, val2, va ...

  10. 转 Python常见数据结构整理

    http://www.cnblogs.com/jeffwongishandsome/archive/2012/08/05/2623660.html Python常见数据结构整理 Python中常见的数 ...

随机推荐

  1. Mysql5.6 online ddl

    Innodb性能改善方面: --Users can add indexes and perform standard table alterations while the database rema ...

  2. 深入理解CSS动画animation

    × 目录 [1]定义 [2]关键帧 [3]动画属性 [4]多值 [5]API 前面的话 transition过渡是通过初始和结束两个状态之间的平滑过渡实现简单动画的:而animation则是通过关键帧 ...

  3. 开源分布式数据库中间件MyCat源码分析系列

    MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置. ...

  4. ASP.NET Core MVC TagHelper实践HighchartsNET快速图表控件-开源

    ASP.NET Core MVC TagHelper最佳实践HighchartsNET快速图表控件支持ASP.NET Core. 曾经在WebForms上写过 HighchartsNET快速图表控件- ...

  5. spring笔记5 spring IOC的基础知识1

    1,ioc的概念 Inverse of control ,控制反转,实际的意义是调用类对接口实现类的依赖,反转给第三方的容器管理,从而实现松散耦合: ioc的实现方式有三种,属性注入,构造函数注入,接 ...

  6. Java泛型

    什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个 ...

  7. 最小生成树计数 bzoj 1016

    最小生成树计数 (1s 128M) award [问题描述] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一 ...

  8. ASP.NET MVC搭建项目后台UI框架—1、后台主框架

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  9. 应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案

    SSIO的更新 在SSIO上增加了UDP通讯方式,可以到Github上下载源代码.在原来的项目中,远端的设备与中心站的数据交互并没有使用过UDP方式.这种短连接的通讯链路,不容易维护,主要体现在:(1 ...

  10. 初识Servlet

    1.创建DispatcherServlet package myservlet; import java.io.IOException; import javax.servlet.ServletExc ...