python学习(2)——字符串,列表,元组,集合
2017-07-06 20:13
561 查看
字符串
1、序列支持的操作
字符串属于序列,序列支持的操作有:定义一个字符串 s = ‘hello’
索引
s[i]:获取特定位置的元素,如s[0]=h,
hello的索引依次为0(-5)、1(-4)、2(-3)、3(-2)、4(-1)
切片
s[i:j]:提取对应的部分作为一个序列,如s[0:3]=hel(包括i,不包括j)
如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
扩展:s[i:j:k],k为递增步长,如s[0:3:2]=hl
判断子串
判断一个字符串(或字母)是不是属于s,用in,或not in,返回True或False,如
重复
可用*n让一个字符串重复输入n遍
连接——“+“
计算长度——len()
2、字符串的常用操作
定义一个字符串s,我们可以用dir(s)查看字符串有哪些操作,或在编译工具(如ipython)里用Tab自动补齐看到:1)查看操作的帮助
如:用help(s.center),可以看到它的参数,返回的类型,以及说明
2)s.center(width[,fillchar])——返回一个长为width的新字符串,在新字符串中原字符居中,其他部分用fillchar指定的符号填充,未指定时通过空格填充。
3)s.capitalize()——将字符串首字母大写
4)s.isalnum() ——判断是否都是字母或数字
s.isalpha() ——判断是否都是字母
s.isdigit() ——判断是否都是数字
s.islower() ——判断是否都是小写
s.isspace() ——判断是否都是英文空格
s.istitle() ——判断是不是都是标题(有大小写)
s.isupper() ——判断是不是都为大写字母
5)s.strip([chars])
——返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。
——s.lstrip()删除首部的;s.rstrip()删除尾部的
6)s.split()——以作为分割符对s进行切割,默认为空格
7)s.endswith(suffix[, start[, end]])——判断字符串是否以suffix结束,如果是,返回True;否则返回False
s.startswith(suffix[, start[, end]])——判断字符串是否以suffix开始
8)s.count(sub[, start[, end]])——返回sub在s中出现的次数,如果start与end指定,则返回指定范围内的sub出现次数。
9)s.find(sub[,start[,end]])——判断sub是否在s中,存在返回索引值,不存在返回-1
10)s.replace(old,new[,count])
——将s中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换前count个字符串
11)s.lower()——将字符串s所有字母转化为小写
s.upper()——将字符串s所有字母转化为大写
列表
列表的定义:list = []列表内的元素可以是任意类型,包括数值类型,列表,字符串等均可
列表也是序列,所以索引,切片等列表也可以实现
列表的常用操作:
1、列表的添加
1)li.append()——在列表最后添加元素2)li.insert(index, object)——在指定索引前添加元素
2、列表的修改
列表是可变类型的序列,所以修改列表中的元素时,可直接进行重新赋值3、列表的删除
1)li.remove()——删除列表中某个元素2)del(li)——删除整个列表或列表中某个元素
4、其他
1)li.sort()——排序2)li.index(value, [start, [stop]])——查看对应元素的索引
3)li.pop([index])——弹出索引位置的元素,不填默认最后一个
小练习:
用列表实现一个简单的队列(先进先出)
实现以下功能(菜单如下)
o:pop(出队)
u:push(入队)
v:view(查看队列的元素)
q:quit(退出)
#!/usr/bin/env python # coding:utf-8 _author_ = "xj" li = [] print ''' 欢迎来到队列管理系统 o:pop(出队) u:push(入队) v:view(查看队列的元素) q:quit(退出) ''' while True: choice = raw_input("请输入您的选择:") if choice.lower() == "u": a = raw_input("请输入入队元素:") li.append(a) elif choice.lower() == "o": print li.pop(0),"已出队" elif choice.lower() == "v": print li elif choice.lower() == "q": print " 退出!"< 4000 /span> exit() else: print "请输入 o/O ; u/U ; v/V ; q/Q!"
运行结果如下:
元组
定义空元组tuple = ()定义单个值的元组tuple = (aaa,);注意:一定要在后面加”,”
由于元组不是可变类型的序列,所以不能修改元组中的元素,但当元组中的元素有列表时,可修改相应部分。
元组也是序列,可以进行索引,切片,查看长度等操作
特性:对多个变量可通过元组方式分别赋值
元组的操作
元组所定义的方法比较简单,只有2个1)tu.count(value)——该元素在元组中出现过几次
2)tu.index(value, [start, [stop]])——查看对应元素的索引
集合
集合的定义:
定义集合时,里面至少要有一个元素,不能为空(为空时类型不是set,而是dict);里面可以包含元组,但不能包含列表,因为集合和元组都是不可变类型的序列,但列表是可变的。
集合是一个无序的,不重复的数据组合。可以通过set()方法将列表去掉重复的元素。
例:输入一个英文句子,统计该句的单词数目和词的种类。
#!/usr/bin/env python # coding:utf-8 _author_ = "xj" ch = raw_input("请输入一个英文短句:") num = len(ch.split()) n2 = len(set(ch.split())) print num, n2
运行结果:
集合的关系
集合有其他数据类型没有的属性,即关系测试,包含交集、差集、并集、是否为子集、是否为父集等方法。s1 = {1, 2, 3, 4, 1, 3, 4}
s2 = {1,2,11,”hello”}
• 交集: s1.intersection(s2)——s1 & s2
s1.intersection_update(s2) //求交集并将交集赋给s1
• 并集: s1.union(s2)——s1 | s2
• 差集: s1.difference(s2)——s1 - s2
s2.difference(s1)——s1 - s2
• 对等差分 s1.symmetric_difference(s2)——s1 ^ s2
• 子集 s1.issubset(s2)
• 父集 s1.issuperset(s2)
集合的操作
集合的添加s.add(1) #在集合中添加一项
s.update([1,3,4]) #在集合中添加多项,跟的参数应该是可迭代类型
集合的删除
s.remove(1) #删除集合中指定的元素,如果该元素不存在,则报错
s.discard(1) #删除集合中指定的元素,如果该元素不存在,则不报错
s.pop() #随机删除集合中的某个元素
s.clear() #清空集合的所有元素
集合的其他操作
print len(s) #显示集合set的长度
print 1 in s #检测某元素是否为集合s的成员,返回布尔值
综合练习
在上一次输入用户名,密码登陆的基础上,增加2个列表,一个存用户名users = [‘blue’, ‘red’],一个存密码passwd = [‘hello’, ‘westos’],增加菜单并实现功能:c(C):create(创建新用户)(判断是否已存在该用户)
l(L):login(登陆)(3次机会)
#!/usr/bin/env python # coding:utf-8 __author__ = "xj" def create(): name = raw_input("请输入用户名:") if name in users: print "该用户名已经存在" else: pass1 = raw_input("请输入密码:") pass2 = raw_input("请重复输入密码:") if pass1 == pass2: users.append(name) passwd.append(pass1) print "***用户创建成功!!!***" else: print "***两次密码输入不一致,用户创建失败!!!***" def login(): i = 0 while (i < 3): name = raw_input("name:") password = raw_input("password:") i += 1 if name in users and password in passwd and users.index(name)==passwd.index(password): print "\n\twelcome to user manage system!\n" exit() print "用户名或密码错误,请重新输入,你还有%d次机会!" % (3 - i) print "你已经登陆过三次,请10min后再登陆。" users = ['blue', 'red'] passwd = ['hello', 'westos'] print ''' 欢迎来到用户管理系统 c(C):create(创建新用户) l(L):login(登陆) q:quit(退出) ''' while True: choice = raw_input("请输入您的选择:") if choice.lower() == "c": create() elif choice.lower() == "l": login() elif choice.lower() == "q": print "\n\t***退出!***\n " exit() else: print "请输入 c/C ; l/L ; q/Q!"
运行结果:
1)创建用户:
2)登陆:
相关文章推荐
- Python学习笔记ucas(lecture2)数据结构(字符串、列表、元组、字典、集合)
- Day2 Python基础学习——字符串、列表、元组、字典、集合
- Python学习笔记(9)-列表list、元组tuple、字典dict、集合set
- Python学习--识别“字符串&字典&列表&元组“
- Python 学习笔记 -- 变量、元组、列表、字典和集合
- python字符串,列表,字符串,元组,集合的一些方法
- python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典
- python学习-1-列表,元组,字典,集合,文件操作
- Python之列表、字符串、元组、集合、字典:
- python学习-1-列表,元组,字典,集合,文件操作
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- python学习总结---列表、元组、字符串、字典中一些常用函数
- python 学习笔记day04-python字符串、列表、元组
- python基础学习——列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 介绍及相互转换
- python字符串 列表 元组 字典 集合的相互转化
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- Python简单学习(lecture2)数字、字符串、列表、元组、字典
- 【Python】基础学习——列表(list),元祖(tuple),字典(dict),字符串(string),集合(set)
- python 学习笔记:字符串,列表,元组
- python字符串,元组,列表,集合的基础总结