day02_雷神_字符串、列表、字典

1.字符串

1.1 字符串相加

s1 = "  ale  x  "
s2 = "   sb   "
print(s1 + s2)   #识别空格
print(s1.strip() + s2.strip())

    ale  x sb   
ale  xsb

1.2 字符串相乘

s1 = "alex  "
print(s1 * 5)

alex  alex  alex  alex  alex  

note:str*int

1.3 字符串索引、切片

字符串索引,从0开始,空格也会输出

s = "chun tian lai le "
print(s[0],type(s[0]))
print(s[4],type(s[4])) 
print(s[-1],s[-2])   -1是最后一个元素

字符串切片[起始索引:结束索引+1:步长],顾首不顾尾,所以结束索引+1

s = "chuntianlaile"
print(s[::2])
print(s[::-1])

cutalie
elialnaitnuhc

1.4 字符串常用方法

1.4.1 **capitalize 首字母大写其余字母小写

s = 'alexWUsir'
s1 = s.capitalize()
print(s1)

Alexwusir

1.4.2 **swapcase 大小写翻转

s = 'alexWUsir'
s2 = s.swapcase()
print(s2)

ALEXwuSIR

1.4.3 *title 非字母隔开的每个单词的首字母大写

s = 'alex wusir*taibai2ritian'
s3 = s.title()
print(s3)

Alex Wusir*Taibai2Ritian

1.4.4 **center 设置总长度,并居中

s = 'alex wusir*taibai2ritian'
s4 = s.center(30,)
s4 = s.center(50,'*')
print(s4)

*************alex wusir*taibai2ritian*************

1.4.5 *** upper() lower() 全部大写、全部小写

验证码忽略大小写
code = 'AwEqr'
username= input('请输入用户名:')
your_code = input('请输入验证码:')
if username == 'alex' and your_code.upper() == code.upper():
    print('验证成功')

1.4.6 ***startswith endswith
s = 'alexWUsir'
s6 = s.startswith('a')
print(s6)
True

s7 = s.startswith('alex')
True

s8 = s.startswith('WU', 4,)  选择索引位置开始
True  

1.4.7*** strip()、lstrip(),rstrip() 默认去除字符串前后的空格,换行符,制表符;去除的元素可自定制。

ss = 'abclaonanhaiq'
ss1 = ss.strip('abqc')
print(ss1)

laonanhai  首尾都删除,没有匹配到abqc中的任何一个,就停止。

username = input('>>>').strip()
password = input('>>>').strip()
if username == '老男孩' and password == '123':
    print('登录成功')

1.4.8*** replace

s = 'alex 分甘共苦老地方 alex 风刀霜剑卡乐芙'
s8 = s.replace('alex', 'SB')
s9 = s.replace('alex', 'SB',1)  1是次数,替换一次。2 就是两个alex都替换了。
print(s9)

SB 分甘共苦老地方 alex 风刀霜剑卡乐芙

1.4.9 ***split() 分隔 str ---> list
s = " www.cctv.com,www.cntv.com,www.news.cn \t"
s1 = s.strip().split(',')
print(s1)

['www.cctv.com', 'www.cntv.com', 'www.news.cn']

l1 = s1.split()  默认以空格分隔
s1 = s.strip().split(',',1) 数字是分割次数,分割1次

1.4.10***join list---> str

li = ['www.cctv.com', 'www.cntv.com','www.news.cn']
a = '...  '.join(li)
print(a)

www.cctv.com...  www.cntv.com...  www.news.cn

1.4.11***find index 通过元素找索引
find找不到会返回-1
index找不到会报错

s = 'alexwausir'
s11 = s.find('ex')
2

s = "123456789123456789123456789"
a = s.find("9",1,10)
print(a)  查找索引1开始到10之间的第一个出现的字符串9,后边重复的不算。

1.4.12***format

第一种用法

s = "我叫{},今年{},爱好{}"
s12 = s.format('太白', '25', '女')
print(s12)

第二种用法

s1 = "我叫{0},今年{1},爱好{2},我依然叫{0}"
s13 = s1.format('太白', '25', '女')
print(s13)  复用

第三种用法

s3 = "我叫{name},今年{age},爱好{hobby}"
s14 = s3.format(age=25,hobby='girl',name='太白')
print(s14)  乱序

公共方法

s = "aabbccdd"
print(len(s))  长度
print(s.count("a"))  元素“a”出现的次数

8
2

is系列

name = '123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成

True
False
True

int、str、bool转换

int --> str

s = 123
print(s,type(s))
s1 = str(s) 或者s1 = str(123)
print(s1,type(s1))

str --> int

s = "123"
print(s,type(s))
s1 = int(s)
print(s1,type(s1))

int --> bool

0是False,非0是True

bool --> int

True是1,False是0

str--> bool

空是False,非空是True,空格也是True

str ---> list

split

list --> str

join

格式化输出

利用三引号,实现表格形式

print("""
    欢迎登陆{}
    {}{}{}
    {} {} {}
""".format("1","2","3","4","2","3","4"))

and or not

1,前后都是比较运算

优先级:() > not > and > or
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)

2,前后都是数字

0 是False  非0 都是True

2 列表

2.1 取值

2.1.1 按照索引取值

按照索引取值,取出来的元素保持其原有的任何属性(与元素本身的数据类型一致)

2.1.2 按照切片取值

按照切片取值,取出来的是小列表

li = ["alex", "wusie","hou","22","33"]
l1 = li[::2]
print(l1)

['alex', 'hou', '33']

2.2 增

append() 最后追加

l = ['WuSir', 'alex', 'OldBoy', 'barry']
l.append([1, 2, 3])
print(l)

['WuSir', 'alex', 'OldBoy', 'barry', [1, 2, 3]]

insert 根据索引插入

l = ['WuSir', 'alex', 'OldBoy', 'barry']
l.insert(1, '葫芦')
print(l)

['WuSir', '葫芦', 'alex', 'OldBoy', 'barry

extend 将可迭代对象按最小元素添加

l.extend([1, '2122', 56])
print(l)

['WuSir', 'alex', 'OldBoy', 'barry', 1, '2122', 56]

2.3 删

pop 按照索引删除

l = ['WuSir', 'alex', 'OldBoy', 'barry']
print(l.pop(0))
print(l)

WuSir  pop有返回值
['alex', 'OldBoy', 'barry']  

remove 按照元素删除

l = ['WuSir', 'alex', 'OldBoy', 'barry']
l.remove("alex")
print(l)

clear 清空列表

l.clear()
print(l)

del 删除列表;按照索引删除,按照切片删除

del l
print(l)

del l[1]
print(l)

del l[:3]
print(l)

l = [11, 22, 33, 44, 55]
del l[1::2]
print(l)

[11, 33, 55]

2.4 改

按照索引改

l = ['WuSir', 'alex', 'OldBoy', 'barry']
l[0] = "houbinglei"
print(l)

按照切片去改,改的是那一片区域,有点类似extend,将新的最小元素插入。理解最小元素。

l = ['WuSir', 'alex', 'OldBoy', 'barry']
l[:2] = ["01","02","123",456,[123,456]]
print(l)

['01', '02', '123', 456, [123, 456], 'OldBoy', 'barry']

2.5 查

按照索引、切片、切片+不长查

for 循环遍历查

 for i in l:
    print(i)

2.6 列表其他方法

print(len(l))  总个数

print(l.count('WuSir'))   某个元素出现的次数

l1 = [1, 9, 8, 4, 3, 2, 6,]
l1.sort()   正序排序
print(l1)

l1.sort(reverse=True)  #倒叙排序
print(l1)

l1.reverse()   翻转
print(l1)

2.7 列表的嵌套

l1 = [1, 2, 'alex', ['WuSir', 'taibai', 99], 6]
l1[-2][0] = l1[-2][0].upper()
l1[-2][-1] = str(l1[-2][-1] + 1)
print(l1)

[1, 2, 'alex', ['WUSIR', 'taibai', '100'], 6]

2.8 元组(tuple)和range

元祖。只读的列表

tu1 = (1, 2, [1, 3,], 4)
tu1[2].append(666)
print(tu1)

只是不能修改元祖的最小元素。
tu = (1, 2, 33, 'alex')
print(tu[:-1])

(1, 2, 33)  -1是不能取到alex,切片不顾尾

range,一种数字组成的特殊列表

for i in range(1,10,2):
    print(i)

默认从0开始,不顾尾,2是步长

列表增删改查,3424

3 字典

3.1 增

根据key增加

dic['hobby'] = 'old_girl'   无责增加,有责修改。
dic['name'] = 'alex'
print(dic)

setdefault()方法增加

默认没有添加,有的话不修改,默认值是None
dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
}

dic.setdefault("love",)
print(dic)

dic.setdefault('high', 169)
print(dic)

{'name': '老男孩', 'age': 10000, 'sex': '男', 'love': None}
{'name': '老男孩', 'age': 10000, 'sex': '男', 'love': None, 'high': 169}

3.2 删

pop 根据key删除

dic = {
'name': '老男孩',
'age': 10000,
'sex': '男',
}
print(dic.pop("name1",'没有这个键'))
print(dic.pop("name"))
print(dic)

dic = {
'name': '老男孩',
'age': 10000,
'sex': '男',
}
print(dic.pop("name1",'没有这个键'))  可以设定返回值
print(dic.pop("name"))
print(dic)

popitem() 3.6 之前是随机删除

clear

dic.clear()
print(dic)

del 删除整个字典; 按照键去删除键值对

del dic
print(dic)
del dic['name']
print(dic)

3.3 改

根据键改

update()方法

dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
}
dic1 = {}
print(dic1)
dic1.update(dic)
print(dic1)

{}
{'name': '老男孩', 'age': 10000, 'sex': '男'}

3.4 查

根据key查,没有会报错

根据get()方法

dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
}
dic1 = {}
print(dic["name"])
print(dic.get("name1","meiyou"))

老男孩
meiyou  不设置,默认返回None,不报错

for 循环 三种

dic = {
    'name': '老男孩',
    'age': 10000,
    'sex': '男',
}
for k in dic.keys():
    print(k)

name
age
sex

    分别赋值原理:
a, b = 1 ,3
a, b = [22, 33]
print(a,b)
for k, v in dic.items():
    print(k, v)

补充:

循环列表、字典是最好不要改变其本身得结构,比如删除操作;

fromkeys()方法,创建一个新得字典

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print "New Dictionary : %s" %  str(dict)

dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" %  str(dict)

New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}  每个值都是10

猜你喜欢

转载自www.cnblogs.com/houbinglei/p/9268709.html
今日推荐