您的位置:首页 > 编程语言 > Python开发

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)登陆:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐