-
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L.pop() 'Paul' >>> print L ['Adam', 'Lisa', 'Bart']
pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。
查看全部 -
python的运算直接输入就行,需要输出的前面加print,但不是字符串的不需要加‘’。
查看全部 -
>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.append('Paul') >>> print L ['Adam', 'Lisa', 'Bart', 'Paul']
append()总是把新的元素添加到 list 的尾部。
>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.insert(0, 'Paul') >>> print L ['Paul', 'Adam', 'Lisa', 'Bart']
L.insert(0, 'Paul') 的意思是,'Paul'将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的Adam同学,以及后面的所有同学,都自动向后移动一位。
查看全部 -
-1 这个索引来表示最后一个元素:print L[-1]
倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4 表示:
查看全部 -
python中基本数据结构: list dict tuple set的相关知识
浮点数 float 科学计数法表示
布尔值注意大小写 True False
空值 None
python还提供了列表、字典等多种数据类型
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list
由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:
一个元素也没有的list,就是空list:
list.append(元素)向末尾添加
list.insert(索引,元素)向指定位置插入
list.pop()删除元素
接受空参数(删除末位),或者指定索引位置
返回被删除的元素
直接对list中的元素赋值可以达到修改的目的
tuple 和list结构相似,但定义后不能再修改
用()创建,
>>> t = ('Adam', 'Lisa', 'Bart')
索引还是一样的t[0]
单元素tuple
t = (1,)
防止被解释为整型数,所以加一个,
多元素tuple加不加,无所谓结果一样
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
dict字典结构
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。
由于dict也是集合,len() 函数可以计算任意集合的大小:
>>> len(d)
3
注意: 一个 key-value 算一个,因此,dict大小为3。
可以简单地使用 d[key] 的形式来查找对应的 value
python中所有结构体访问的时候都是[]?
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
if 'Paul' in d:
print d['Paul']
dict.get(key)来判断key是否在dict中
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None
dict
查找速度快、但占用内存空间大,key不能重复,且key必须是不可变的数据类型,list不可以作key,元素对存储无序
list
查找速度随元素个数增多而变慢,占用内存空间小,元素存储有序
dict的更新
dict[key] = value
可以用循环结构遍历dict
for循环比较常用
set
跟list有类似的结构,但其中元素不能重复
与list有莫大的渊源,创建方式也是将list作为参数传入
创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:
>>> s = set(['A', 'B', 'C'])
set中的元素是无序存储的
当我们传入包含重复元素的 list,set会自动去掉重复的元素
由于set存储的是无序集合,所以我们没法通过索引来访问。
访问 set中的某个元素实际上就是判断一个元素是否在set中。
大小写很重要,'Bart' 和 'bart'被认为是两个不同的元素。
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
最后,set存储的元素也是没有顺序的。
set也是一种集合,可以用for循环遍历
list L = []
tuple t = ()
dict d = {}
set s = set([])
set的更新
set.add() 添加 add不会报错,重复不变
set.remove() 删除 删除前需要判断是否在set中否则可能报错
查看全部 -
set内部存储的元素是无序的。set不能包含重复的元素
查看全部 -
切片L[X:X:X]
第一个数表示开始位置,第二个数是结束位置,第三个数是间隔
把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple
查看全部 -
test2
查看全部 -
test1
查看全部 -
def firstCharUpper(s):
return s[0].upper()+s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
查看全部 -
print 'Bart:',d['Bart']
查看全部 -
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
要避免 KeyError 发生,有两个办法:
一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d: print d['Paul']
如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>> print d.get('Bart') 59 >>> print d.get('Paul') None
查看全部 -
不可变这个限制仅作用于key,value是否可变无所谓
查看全部 -
dict的缺点是占用内存大,还会浪费很多内容,dict内部是无序的ict的,作为 key 的元素必须不可变
查看全部 -
#-*- coding:utf-8 -*-
# move(n, a, b, c)表示的是有n个盘子在a柱子上,将要移到b柱子上面去
def move(n, a, b, c):
# 如果a柱子上面只有一个盘子,则直接移到c柱子上面去并输出路径,结束递归
if n == 1:
print a, '-->', c
return
# 表示的是将n-1的盘子从a柱子上面移到b柱子上面去
move(n-1, a, c, b)
# 输出最下面个盘子移从a移到c的路径
print a, '-->', c
# 将b柱子上面的n-1个盘子移动到c柱子上面
move(n-1, b, a, c)
move(4, 'A', 'B', 'C')
查看全部
举报