在练习中遇到的怪事
python2.7里面的rawinput 还是input输进来的都是字符串类型
列表元祖等类型中使用的append方法没有返回值,所以我们一旦赋值的话,会报错,update方法也不会有返回值,全局变量要重复使用在函数里面,我们最好是使用函数传参的方法进行操作
print("-5%s-10%s-10%s" % (a,b,c)) ##格式化输出,每个字符分别占5,10,10个位置,%前后加空格,不要逗号
在函数中修改全局变量需要使用global关键字
判断是不是整数使用isdigit方法判断
字符串处理
•S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
•S.rfind(substring,[start [,end]]) #反向查找
•S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
•S.rindex(substring,[start [,end]])#同上反向查找
•S.count(substring,[start [,end]]) #返回找到子串的个数
•
•S.lowercase()
•S.capitalize() #首字母大写
•S.lower() #转小写
•S.upper() #转大写
•S.swapcase() #大小写互换
•
•S.split(str, ' ') #将string转list,以空格切分
•S.join(list, ' ') #将list转string,以空格连接
•
•处理字符串的内置函数
•len(str) #串长度
•cmp("my friend", str) #字符串比较。第一个大,返回1
•max('abcxyz') #寻找字符串中最大的字符
•min('abcxyz') #寻找字符串中最小的字符
列表
•list的方法
•L.append(var) #追加元素
•L.insert(index,var)
•L.pop(var) #返回最后一个元素,并从list中删除之
•L.remove(var) #删除第一次出现的该元素
•L.count(var) #该元素在列表中出现的个数
•L.index(var) #该元素的位置,无则抛异常
•L.extend(list) #追加list,即合并list到L上
•L.sort() #排序
•L.reverse() #倒序
•
•a[1:] #片段操作符,用于子list的提取
•[1,2]+[3,4] #为[1,2,3,4]。同extend()
•[2]*4 #为[2,2,2,2]
•
•del L[1] #删除指定下标的元素
•del L[1:3] #删除指定下标范围的元素
•list的复制
•L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作
•L1 = L[:] #生成L的一个COPY
元祖
•tuple:元组(即常量数组)
•tuple = ('a', 'b', 'c', 'd', 'e')
可以用list的 [],:操作符提取元素。就是不能直接修改元素。 字典
•D.get(key, 0) #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
•D.has_key(key) #有该键返回TRUE,否则FALSE
•D.keys() #返回字典键的列表
•D.values() #以列表的形式返回字典中的值,返回值的列表中可包含重复元素
•D.items() #将所有的字典项以列表方式返回,这些列表中的每一项都来自于(键,值),但是项在返回时并没有特殊的顺序
•
•D.update(dict2) #增加合并字典
•D.popitem() #得到一个pair,并从字典中删除它。已空则抛异常
•D.clear() #清空字典,同del dict
•D.copy() #拷贝字典
•D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小)
• #第一个大返回1,小返回-1,一样返回0
•
•dictionary的复制
•dict1 = dict #别名
•dict2=dict.copy() #克隆,即另一个拷贝。
列表与字典比较
•dict:
–查找和插入的速度极快,不会随着key的增加而增加;
–需要占用大量的内存,内存浪费多。
–KEY不可变
–默认无序
•list:
–查找和插入的时间随着元素的增加而增加;
–占用空间小,浪费内存很少。
–通过下标查询
–有序
set 集合
特点:
•无序
•元素不重复
功能:
•关系测试
•去重
a = set([1,2,3,4])
b = set([3,4,5,6])
a & b #求交集 a.intersection(b)
a | b #求并集 a.union(b)
a – b # 求差集 a.difference(b)
a ^ b #求对称差集 a.symmetric_difference(b)
a.issubset(b) #a 是b 的子集
a.issuperset(b) # a 是否包含b