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 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注