《think in python》学习-10
think in python 10
列表
和字符串相似,列表是值得序列。在列表中,它可以是任何类型,列表中的值成为元素,有时也称为列表项
s = [10,20,30,40]
print s
#列表也是可嵌套的。
s = [10,20,30,[2,3,4]]
print s
列表是可变的
s = [10,20,30,[2,3,4]]
print s
s[1] = 15
print s
通过操作下班,改变了 列表中的某个值。
遍历一个列表
for i in s:
print i
for i in range(len(s)):
print s[i]
操作列表
a = [1,2,3]
b = [4,5,6]
c = a+b
print c
d = a*4
print d
+号操作符可以拼接列表,*号可以重复一个列表多次
列表切片
切片操作也可以用于列表
word = ['a','b','c','d','e','f','g']
# [start:end:length]
print word[::-1]
print word[:]
print word[3:4]
列表方法
append方法可以在列表尾部添加新的元素
word.append("h")
print word
extend接受一个列表作为参数,并将其附加到列表中
word2 = ['i','j','k']
word.extend(word2[::-1])
print word
sort方法将列表中的元素从低到高重新排序
word.sort()
print word
删除元素
从列表中删除元素,有很多方法,如果你知道下班可以使用pop
pop返回被删掉的值
w = word.pop(1)
print w
del则是直接删掉指定的值
del word[1]
remove可以删掉元素本身
word = ['A','B']
word.remove('A')
删除多个 可以利用 del配合 切片进行
del word[1:5]
列表和字符串
字符串是
字符的序列, 列表是值的序列。
list函数可以将字符串转换成一个字符的列表
name='hebo'
sn = list(name)
print sn
split可以按指定方式拆分字符
s =' hello world today'
ns = s.split()
print ns
练习
- 编写一个函数
nested_sum接受一个由内嵌的整数列表组成的列表作为形参,并将内嵌列表中的值全部加起来。def nested_sum(list):
l = []
for i in list:
l += i
return sum(l) print nested_sum([[1,2,3,4],[3,2,4,5]])
- 编写一个函数,接受一个数字列表,并返回其积累和,即一个新的列表,期第i位元素是原始列表的前i+1元素的和
def sum_list(list):
r = []
for i in list:
r.append(sum(list[:i]))
return r print sum_list([1,2,3])
- 写一个
middle函数,接受一个列表作为形参,返回一个新列表。包含除了第一个和最后一个元素之外的所有元素def middle(n):
return n[1:len(n)-1]
- 编写一个
chop函数,接受一个列表,修改它,删除它第一个和最后一个元素 并返回Nonedef chop(list):
del list[0]
del list[len(list)-1]
return None
- 编写一个
is_sorted来判断一个列表是否按照升序排列。def is_sorted(list):
s=list[:]
s.sort()
for i in range(len(list)-1):
if s[i]!=list[i]:
return False
return True
- 编写一个
has_duplicates函数,接受一个列表,当其中任何一个元素出现多一于一次,返回Truedef has_duplicates(list):
s = list[:]
s.sort()
for i in range(len(s)-1):
if s[i]==s[i+1]:
return True return False print has_duplicates([1,2,3,4,5])
- 一个班级有23个学生,其中2个人生日相同几率有多大?随机生成23个同学的生日样本,并检查是否有相同几率。
def random_bdays(n):
t = []
for i in range(n):
t.append(random.randint(1,365))
return t print random_bdays(23) def count_sambday(stu):
count = 0
for i in range(365):
t = random_bdays(stu)
if has_duplicates(t):
count +=1
return count print count_sambday(23)
- 并写一个
remove_duplicates接受一个列表,返回一个新列表,其中只包含原始列表中的每个元素 唯一一份。def remove_duplicates(list):
r = []
for i in list:
if r.count(i)<1:
r.append(i)
return r print remove_duplicates([1,1,3,4,5,6,7]) - 编写一个函数 读取
words.txt并构建一个列表,每个元素是一个单词,给这个函数编写2个版本,其中一个使用append方法,另一个使用t=t+[X]这样,那个运行时间更长?def word_list():
fin = open("words.txt")
r = []
for i in fin:
word = i.strip()
r.append(word)
return r def word_list2():
r = []
fin = open("words.txt")
for i in fin:
word = i.strip()
r += [word]
return r def count_time(fn):
start = time.time()
l = fn()
end = time.time()
print fn.__name__,"result",len(l), ",run ",end - start,"s" count_time(word_list)
count_time(word_list2)
- 写一个函数 查找单词表中出现的反向词(一个单词是另外一个的反向序列)
def make_word_list():
word_list = []
fin = open('words.txt')
for line in fin:
word = line.strip()
word_list.append(word)
return word_list
word_list = make_word_list()
def reverse_pair(wordlist,word):
rev = word[::-1]
return to_bisect(wordlist,rev) for word in word_list:
if reverse_pair(word_list,word):
print word,word[::-1]
术语表
- 列表(list):值的序列
- 元素(element):列表或者其他序列中的一个值,也称为列表项
- 下标(index):标明元素在列表中的位置的整数值
- 嵌套列表(nested list):作为其他列表的元素的列表
- 映射(mapping):一种关联,表示一个集合的每个元素和另外一个集合的元素如何对应。 例如,列表是从下标到元素的映射
- 累加器(accumulator):在循环中用于加和或者累积某个结果的变量
- 增加赋值(augmented assignment):使用类似+=操作符来更新变量值的语句
- 化简(reduce):一种处理模式,便利一个序列,并将元素值累积起来计算为一个单独的结果
- 映射(map):一种处理模式,遍历一个序列,对每个元素进行操作
- 过滤(fliter):一种处理模式,便利列表,并选择满足某种条件的元素
- 对象(Object):变量可以引用的东西,对象有类型和值
- 相等(equivalent):拥有相同的值
- 相同(identical):是同一个对象
- 引用(reference):变量和它的值之间的关联
- 别名(aliasing):多个变量同时引用一个对象的情况
- 分隔符(delimiter):用于分割字符串的一个字符或字符串
《think in python》学习-10的更多相关文章
- python学习10—迭代器、三元表达式与生成器
python学习10—迭代器.三元表达式与生成器 1. 迭代器协议 定义:对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往 ...
- Python学习--10 面向对象编程
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 本节对于面向对象的概念不做 ...
- python学习10字典
'''''''''字典(Dict)是python语言的一个最大的特征1.定义:是可变的无序集合,以键值对为基本元素,可以存储各种数据类型2.表示:{} 列表:[] 元组 () 字符串 ‘’ “” ‘‘ ...
- Python学习-10.Python函数定义(二)
在Python中定义函数的时候,可以使用参数默认值的方式定义函数 例子: def welcome(who,state='is',action='talking'): print(who,state,a ...
- python学习-10 运算符1
1.加+,减-,乘*,除/ 例如: a = 1 b = 2 c = a + b print(c) 运算结果: 3 Process finished with exit code 0 a = 1 b = ...
- 【python学习笔记】10.充电时刻
[python学习笔记]10.充电时刻 任何python都可以作为模块倒入 *.pyc:平台无关的经过编译的的python文件, 模块在第一次导入到程序中时被执行,包括定义类,函数,变量,执行语句 可 ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- (10.1)Python学习笔记二
1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...
- 《Python学习手册 第五版》 -第10章 Python语句简介
前面在开始讲解数据类型的时候,有说过Python的知识结构,在此重温一下 Python知识结构: 程序由模块组成 模块包含语句 语句包含表达式 表达式创建并处理对象 关于知识结构,前面已经说过我自己的 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
随机推荐
- 一个人的旅行(floyd+dijskra+SPFA+Bellman)
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- org.springframework.web.util.IntrospectorCleanupListener的用途
Spring官方API中对其描述如下 /** * Listener that flushes the JDK's {@link java.beans.Introspector JavaBeans In ...
- PC和ARM平台编译Qt的命令
编译for PC 的Qt过程是: (1)qmake -project (qmake命令,用于创建hello.pro,将所有的文件编译成一个与平台无关的工程文件).(注意:按照前面步骤安装好Qt环境之后 ...
- RDLC报表系列(一) 简单的动态数据绑定和配置
RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...
- PHP读取CSV大文件导入数据库的示例
对于数百万条数据量的CSV文件,文件大小可能达到数百M,如果简单读取的话很可能出现超时或者卡死的现象. 为了成功将CSV文件里的数据导入数据库,分批处理是非常必要的. 下面这个函数是读取CSV文件中指 ...
- java poi 导出excel
poi的jar下载地址:http://poi.apache.org/ 下载后会有很多jar,但是如果只是简单的excel报表的话,导入一个poi-版本号-日期.jar就可以了. 导出代码: priva ...
- 深入理解JavaWeb技术内幕(一)
最近在看许令波的<深入理解JavaWeb技术内幕>.整理了一些笔记.想做一个系列,这篇是系列的第一篇,讲Web请求. B/S架构 最常见的架构方式. 优点: 1.客户端使用统一(此处的统一 ...
- CSS圆角样式
CSS圆角: /*纯css,设置图片圆角*/ #top2 { margin-left:20px; padding:10px; width:600px; height:300px; border: 5p ...
- html5 canvas 一个漫天飞雪的效果
很棒的下雪效果 代码奉上 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- jquery ajax 跨域提交(附IE浏览器解决方案)
后台输出内容之前需要指定header("Access-Control-Allow-Origin: *"); post 之前 jQuery.support.cors = true; ...