提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
递归汉诺塔
>>> def hanNuoTa(n,a,b,c):
if n==1:
print(a,"-->",c)
else:
hanNuoTa(n-1,a,c,b)#前n-1个盘子从柱子1移动到柱子2
print(a,"-->",c)#最下面的盘子都到第三个上
hanNuoTa(n-1,b,a,c)#将前n-1个盘子从柱子2移动到柱子3
>>> hanNuoTa(3,1,2,3)
1 --> 3
1 --> 2
3 --> 2
1 --> 3
2 --> 1
2 --> 3
1 --> 3
>>>
一、什么是字典
字典是一种可变容器模型,且可存储任意类型对象。是映射类型
字典的每个键值 key=>value 对用冒号 ‘: ’分割,每个对之间用逗号‘,’分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
键是唯一的,值不必唯一
>>> dict1={'a': 'hhh','b': 'www','c': 'wqqw'}
>>> dict2={}
>>>
二、字典基操
类似于C语言数组操作,区别在[]内为要操作的键
1.读取字典
字典内有该值
>>> dict1={'英文':70,'数学':90,'语文':99}
>>> print(dict1)
{'英文': 70, '数学': 90, '语文': 99}
>>> print(dict1['数学'])
90
>>>
字典内无该值
>>> print(dict1['数'])
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
print(dict1['数'])
KeyError: '数'
>>>
2.修改数据
改变原有值
>>> dict1['数学']=10
>>> print(dict1['数学'])
10
>>>
添加新值:直接添加新值,比C语言简单
>>> dict1['Pyhon']=80
>>> print(dict1)
{'英文': 70, '数学': 10, '语文': 99, 'Pyhon': 80}
>>>
3.删除数据
del 字典元素
>>> del dict1['Pyhon']
>>> print(dict1)
{'英文': 70, '数学': 10, '语文': 99}
>>> del dict1
>>> print(dict1)
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
print(dict1)
NameError: name 'dict1' is not defined
>>>
4.字典键的特性
字典值:可为任意值
键: (1)必须为不可变的值,数字,字符串,元组,不能为列表
(2)同一个键不允许出现俩次,如果创建时同一个键被赋值俩次,后一个键会被记住
>>> dict1={'英文':70,'数学':90,'语文':99,'英文':80}
>>> print(dict1)
{'英文': 80, '数学': 90, '语文': 99}
>>>
4.字典键的BIF和函数
len(字典名) 计算键数
str(字典名) 以字符串输出字典
>>> len(dict1)
3
>>> dict1.get('数学')
90
>>>
type(变量名) 返回变量类型
a={}.fromkeys((key1,key2),value) >>>{key1:value,key2:value}:创建一个新字典,以序列(列表,元组,字符串)seq中元素做字典的键,val为字典所有键对应的初始值
>>> dict2={}
>>> dict2.fromkeys(('key1','key2'),'value')
{'key1': 'value', 'key2': 'value'}
>>>
——————————————————————————————————————————————————————————————————————————————
>>> value=('q', 'w', 'e', 'r', 't')#元组版
>>> key2=(0,9,8,7,5)
>>> dict2.fromkeys(key2,value)
{0: ('q', 'w', 'e', 'r', 't'), 9: ('q', 'w', 'e', 'r', 't'), 8: ('q', 'w', 'e', 'r', 't'), 7: ('q', 'w', 'e', 'r', 't'), 5: ('q', 'w', 'e', 'r', 't')}
>>> #感觉这个函数很傻,一般用于字典初始化
>>> key2=[0,9,8,7,5]#序列版
>>> dict2.fromkeys(key2,value)
{0: ('q', 'w', 'e', 'r', 't'), 9: ('q', 'w', 'e', 'r', 't'), 8: ('q', 'w', 'e', 'r', 't'), 7: ('q', 'w', 'e', 'r', 't'), 5: ('q', 'w', 'e', 'r', 't')}
>>> key2='123456'#字符串版
>>> dict2.fromkeys(key2,value)
{'1': ('q', 'w', 'e', 'r', 't'), '2': ('q', 'w', 'e', 'r', 't'), '3': ('q', 'w', 'e', 'r', 't'), '4': ('q', 'w', 'e', 'r', 't'), '5': ('q', 'w', 'e', 'r', 't'), '6': ('q', 'w', 'e', 'r', 't')}
>>>
______________________________________________________________________________
keyind | 检查字典d中是否含键key的项 |
.copy() | 将原来的内容再复制一份,返回新的字典 |
import copy copy.deepcopy() | 深拷贝 |
.clear() | 清空 |
.get(k[,d]) | k在字典中返回其值,不在返回d |
.setdefault(k[,d]) | k在字典中返回其值,不在创建k:d键值对,不填d默认None |
.items() | 得到关于字典键和值组成元组的列表 |
.iteritems() | 得到同上内容的迭代器,必须用list转换才能看 |
.keys()和.iterkeys() | 得到字典所有键的列表 |
.values()和.itervalues() | 得到字典值的列表 |
.pop(k[,d]) | 删除参数的键值对,没有报错。如果参数两个,先检查k有则返回其值,没有返回d |
.popitem() | 可以不写参数,从字典中移除并返回一个 |
.update(要添加的元素) | 将字典或元素里各元素更新加入到字典中 |
.has_key(k) | 判断键k在字典中 |
集合(sit)
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
>>> a=[1,3,3,5,6,3,2,8]
>>> set(a)
{1, 2, 3, 5, 6, 8}
>>>
集合内元素具有唯一性,利用这点可以抛出重复值,但转换为集合后的变量会被自动排序,
>>> a
[1, 3, 3, 5, 6, 3, 2, 8]
>>> b=set(a)
>>> b
{1, 2, 3, 5, 6, 8}
>>> list(b)
[1, 2, 3, 5, 6, 8]
>>>
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。