list
Python内置的一种数据类型是列表:list。
list是一种有序的集合,类似于链表。可以随时添加和删除其中的元素。
创建list
l=[]
l=list()
Tuple(元组)
类似于list但是不可修改
thistupple=("apple","banana","cherry")
print(thistuple[-1])
类似的,具有slice切片操作
thistuple[1:8:2]
可以借助tuple进行swap
(x,y)=(y,x)
打包一组数据,以及拆分一组数据(一一对应)
s =("Susan", 19, "CS") # tuple packing
name, age, major = s # tuple unpacking
print(name)
print(age)
print(major)
用tuple作为函数返回值以便返回多个值
def qwq
qwqqq=a//b
qwqww=a%b
return (qwqqq,qwqww)
Set(集合)
无序的集合,unordered and unindexed
可以使用大括号进行定义,但是不可以使用大括号创建空的set
与set类似的是frozenset,不可修改的set,类似与tuple
mset={} #空的字典dict
mset={"11","22"}
mset=set()
以下操作仅对set有效
add()函数,可以加入一些元素进入集合
mset=set(['1','a','b'])
mset.add('y')
pop(),随机删除一个元素
mset.pop()
remove()和discard(),定向删除一个元素
myset=set(['a', 'b', 'r', 'c', 'd', 'y'])
myset.remove('a')
myset.discard('b')
{'c', 'd', 'r', 'y'}
clear(),清空集合
mset.clear()
并集
s1={1,2}
s2={2,3}
s1 | s2#{1,2,3}
s1 |= s2#s1={1,2,3}
交集
s1 & s2#{2}
s1 &= s2#s1={2}
求差,s1减去其中的一些元素,这些元素是s1和s2的交集中的元素。
s1=set(['a', 'b', 'r', 'c', 'd'])
s2=set(['a', 'l', 'c', 'z', 'm'])
s1 -= s2
# s1={'b', 'd', 'r'}
异或,先对s1,s2取并集,再减去其两者的交集。即取两者中相异的。
s1=set(['a', 'b', 'r', 'c', 'd'])
s2=set(['a', 'l', 'c', 'z', 'm'])
s1 ^= s2
# s1={'b', 'd', 'l', 'm', 'r', 'z'}
一些对set和frozenset都有效的
集合的包换和被包含,用大小于号表示:
> < >= <=
s1=set('abcdef')
s2=set('abc')
s1>=s2 #ture
union()并集操作,返回一个新的集合。
set1={"a","b","c"}
set2={1,2,3}
set3=set1.union(set2)
set3 #{1, 2, 3, 'a', 'b', 'c'}
intersection()交集,同上
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
z = x.intersection(y)
z #{'apple'}
dict(字典)
类似于map,创建一个映射。包括一个(key,value)pair
特性是unordered,changeable,indexed。
grade={'Ana':'B','Honny':'A+','Deny':'A'}
注意可以映射到任何数据类型包括list等
dict的key(下标)必须是不可变对象。例如int float string bool tuple等
创建方式可以使用大括号或者dict()函数
d1=dict(name="susan",age=19,major="cs")
d2=dict([('age',19),('name',"susan"),('major',"cs")])
增加或者改变一个映射
d1['qwq']='A'
d1['qwq']='B'
测试是否加入成功
'John' in d# True
'Daniel' in d# False
可以使用del删除
del d1['major'] #删除一个映射
del d1 #全部删除
判断是否存在于映射之中
d1.has_key('age') #返回1或者0
d1.item() #输出tuple
d1.key()
d1.value()
string(字符串)
字符串,类似于cpp中的字符串,不可修改
可以使用+直接相连
name="ana"
qwq=="hi"+name
用*
表示某一段字符串复制
name="ana"
name*=3#"anaanaana"
转义字符
n 换行
\r 光标重置到行首
\t 输出一个tab
print("hello \n world!")
#hello
# world!
print("hello \r world!")
#world!
print(" hello \t world!")
# hello world
用r' '
表示内部的字符串不进行转义
S = r'\tC:\new\text.txt'
print(S)#\tC:\new\text.txt
用u' '
表示内部使用特殊字符
s1=u"哈哈"
S2=u"äöü"
print(s1,s2)
len()函数获取长度
s="abc"
len(s) #3
string不可以直接单点修改
s='hello'
s[0]='y' #这是错的,不可以
s='y'+s #s前增为yhello
可以使用replace()替换
s="hello"
s.replace("h","m") #mello
s.replace("l","m") #hemmo
切片的slice操作也存在
s="abcdefg"
s[3:6] # def
s[3:6:2] # df
s[::] # abcdefg
s[::-1] # gfedcba
s[4:1:-2] # ec
upper lower切换大小写
s.upper()
s.lower()
判定大小写
s.isupper()
s.islower()
判定字母数字空格
s.isalpha()#是否是数字
s.isdigit()#是否是数字
s.isalnum()
s.isspace()#是否是空格
split操作,按照某种规则切分子串
s="python programming is fun!"
s.split()
# 'python' 'programming' 'is' 'fun!'
s.split(" ",2)#仅仅按照从前向后,分割两次
# 'python' 'programming' 'is fun!'
s2="123456511456"
print(s2.split("1"))
# 234565 456
rsplit反向从右向左分割
s="python programming is fun!"
s.rsplit()
s.rsplit(" ",2)#分割两次
# 'python' 'programming' 'is' 'fun!'
# 'python programming' 'is' 'fun!'
strip去除首尾特定字符
s="***qwqwqwqwqwqwq***"
s.strip('*')
#s='qwqwqwqwqwqwq'
rstrip只去除末尾特定字符
s="***qwqwqwqwqwqwq***"
s.rstrip('*')
#s='***qwqwqwqwqwqwq'
capitalize()首字母大写
"i LOVE python".capitalize()
#I love python
center(width[,fillchar]) 限定宽度并用某个字符填满宽度
"centered".center(20,'*')
#******centered******
0 条评论