13、数据类型-字符串
字符串(String)
python中单引号和双引号使用完全相同。
使用三引号('''或""")可以指定一个多行字符串。
转义符 '\'
反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
字符串可以用 + 运算符连接在一起,用 * 运算符重复。
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。
Python中的字符串不能改变。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
eg:

#!/usr/bin/python3 
str='Runoob' 
print(str)                 # 输出字符串
print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[0])              # 输出字符串第一个字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始后的所有字符
print(str * 2)             # 输出字符串两次
print(str + '你好')        # 连接字符串

字符串操作符:
+ :字符串拼接
* :字符串重复输出
[] :通过索引获取字符串中的字符
[:] :字符串切片,左闭右开原则,str[0:3] 是不包含第三个字符的
a in b :成员运算符,如果字符串a 在 b中则返回True,例如:"abc" in "aabcd" 返回True
a not in b:
r :原样输出,转义,例如 print(r"abc\nabc") ,返回 abc\nabc 没有换行
% : 格式化字符串

字符串内建函数:

import string
len('zzz') --求长度
str1.count('d') --d在str1中出现的次数
lstrip() #截掉字符串左边的空格或指定字符
max(str)/min(str) #返回字符串 str 中最大/小的字母。
replace(old, new [, max]) #把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换, str1.replace('a','z',2),替换动作不超过两次
split() 分割,print (str3.split('i',1)) ##以i为分割,只分割一次
##lower/upper   >>> str3.upper()

14、数据类型-列表

--------------------------------------------------

List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标]
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例

--------------------------------------------------
#!/usr/bin/python3

list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']

print (list)            # 输出完整列表
print (list[0])         # 输出列表第一个元素
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (list[0:-1:2])    # 切片,步长为2
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表
del list[2]  #删除列表元素

Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字,如果第三个参数为负数,表示逆向读取,负数的数值为步长,字符串同理

list方法:
1 list.append(obj) 在列表末尾添加新的对象
2 list.count(obj) 统计某个元素在列表中出现的次数
3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj) 将对象插入列表,索引后面的元素index都+1
6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj) 移除列表中某个值的第一个匹配项
8 list.reverse() 反向列表中元素,原列表改变
9 list.sort( key=None, reverse=False) 对原列表进行排序
--list.sort(reverse=True) 排倒序
10 list.clear() 清空列表
11 list.copy() 复制列表,浅copy,只复制第一层,列表中的列表元素拷贝的是地址,如果想要深复制需要导入copy模块
另外:切片复制也是浅复制
import copy
name2 = copy.deepcopy(name) #深复制

删除列表中指定索引位置的元素
name = [1,2,3]
del name[2]

##list拷贝
list1 = [1,2,3]
list2 = list1 ##list2和list1指向同一个地址,他俩是同一个对象
list3 = list1[:] ##list3拷贝了list1,不是同一个对象##append和extend 区别示例
>>> l2=['a','b','c']
>>> l1.append(l2)
>>> l1
[1, 2, 3, 4, 5, 6, 65, 5, ['a', 'b', 'c']]
>>> l1.extend(l2)
>>> l1
[1, 2, 3, 4, 5, 6, 65, 5, ['a', 'b', 'c'], 'a', 'b', 'c']

15、数据类型-元组
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改(所以元组也叫只读列表)。元组写在小括号 () 里,元素之间用逗号隔开
元组中的元素类型也可以不相同
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
元组的访问
#!/usr/bin/python


tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );

print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
#以上实例输出结果:
#tup1[0]:  physics
#tup2[1:5]:  [2, 3, 4, 5

关于元组是不可变的
所谓元组的不可变指的是元组所指向的内存中的内容不可变。

元组内置函数:
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组。

16、数据类型-集合

Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素s={1,2}
s.add( x )--添加元素
s.update( x ) --该方法,也可以添加元素,且参数可以是列表,元组,字典等,x 可以有多个,用逗号分开。
s.remove( x ) --移除元素
s.discard( x ) --移除,如果没有也不报错
s.pop()  --随机删除集合元素,并返回该元素值
s.clear() --情况集合
x in s --判断x是否在集合s中**frozenset --不可变集合
>>> num3 = frozenset([1,2,3])
>>> num3
frozenset({1, 2, 3})
>>> num3.add(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

16、数据类型-字典
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
给字典里的键赋值,如果键存在,则修改其对应的值,如果键不存在,则新插入键值对

dict = {}
>>> dict['one'] = "1"      --无则添加,有责更新       
>>> dict[2]     = "2"   
输出:        
>>> dict
{2: '2', 'one': '1'}


字典删除

del dict['Name'] # 删除键 'Name'
dict.clear()     # 清空字典
del dict         # 删除字典
*fromkeys用法:创建一个字典
>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3),'Number')
{1: 'Number', 2: 'Number', 3: 'Number'}
>>>遍历 字典
>>> for each in dict2.keys():  --打印值
...     print(dict2[each])>>> for eachItem in dict2.items(): --
...     print(eachItem)

*get方法

print(dict1.get(key)) --如果key不存在就返回一个None而不是报错
>>> dict2[32]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 32
>>> print(dict2.get(32))
None
>>> print(dict2.get(32,'这个key不存在'))


这个key不存在

*in和not in,检查key是否存在,而不是值,序列(str,list,tuple) 检查的是值

*清空
dict2.clear()
*复制
dict3 = dict2.copy() --3和2的地址不同,不是一个对象

*pop和popitem
pop 给一个键,弹出对应的值,字典中删除这个键和值
popitem 随机弹出一个键值对,字典中删除这个对象

>>> a ={1:'a',2:'b',3:'c',4:'d'}
>>> a
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
>>> a.pop(1)
'a'
>>> a
{2: 'b', 3: 'c', 4: 'd'}
>>> a.popitem()
(4, 'd')
>>> a
{2: 'b', 3: 'c'}

字典内置方法:
1 radiansdict.clear()
删除字典内所有元素
2 radiansdict.copy() 返回一个字典的浅复制
3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
5 key in dict 如果键在字典dict里返回true,否则返回false
6 radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表
8 radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
10 radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表
11 pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem() 随机返回并删除字典中的最后一对键和值。

13、三元运算符
small = x if x < y else y

14、打印变色,比如余额,性能等重要的输出
print("\033[31;1m%s\033[0 is Red" %("Red"))