Day02

类型转换

#str ---> int   字符串必须全部由数字组成,否则报错
print(int('123'))  #结果为:123
#int ---> str
print(str(1))  #结果为:'1'

#int ---> bool  只有0是False,非0都是True
print(bool(100))  #结果为:True
print(bool(-1))  #结果为:True
print(bool(0))  #结果为:False
#bool --> int
print(int(True))  #结果为:1
print(int(False))  #结果为:0

# str  ---> bool  所有非空字符串都是True,空字符串是False
print(bool(''))  #结果为:False
print(bool('fdsaf'))  #结果为:True
# bool ---> str 会转换成字符串形式的'True'和'False'
print(str(True))  #结果为:'True'
print(str(False))  #结果为:'False'

# str ---> list split
str = 'hello world'
print(str.split(' '))  #结果为:['hello', 'world']
# list --> str  join
l = ['hello','world']
print(' '.join(l))  #结果为:'hello world'

字符串的操作

#拼接
str1 = 'hello'
str2 = 'world'
str3 = str1 + str2
print(str3)  #结果为:'helloworld'

#相乘 只能是字符串乘数字
str1 = 'hello'
str2 = str1 * 3
print(str2)  #结果为:'hellohellohello'

#切片 str[起始索引:结束索引+1:步长],不包含结束索引本身,即顾头不顾尾
str1 = 'hello world'
print(str1[0])  #结果为:'h'
print(str1[-1])  #结果为:'d'
print(str1[0:5])  #结果为:'hello'
print(str1[:5])  #结果为:'hello'
print(str1[6:])  #结果为:'world'
print(str1[0:5:2])  #结果为:'hlo'
print(str1[-1:-6:-1])  #结果为:'dlrow'

#常用方法 *代表常用程度,*越多代表越常用

# ** capitalize 首字母大写其余字母小写
s = 'hEllo woRld'
s1 = s.capitalize()
print(s1)  #结果为:'Hello world'

# ** swapcase 大小写翻转
s = 'hEllo woRld'
s2 = s.swapcase()
print(s2)  #结果为:'HeLLO WOrLD'

# * title 非字母隔开的每个单词的首字母大写
s = 'hEllo woRld'
s3 = s.title()
print(s3)  #结果为:'Hello World'

# * center 设置总长度,并居中
s = 'hEllo woRld'
s4 = s.center(30)
print(s4)  #结果为:'         hEllo woRld          '
s4 = s.center(30,'*')
print(s4)  #结果为:'*********hEllo woRld**********'

# *** upper 全部转换成大写
s = 'hEllo woRld'
s5 = s.upper()  #结果为:'HELLO WORLD'
print(s5)

# *** lower 全部转换成小写
s = 'hEllo woRld'
s5 = s.lower()  #结果为:'hello world'
print(s5)

# *** startswith 检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。
# 可选参数"start"与"end"为检索字符串的开始与结束位置。
s = 'hEllo woRld'
print(s.startswith('hEllo'))  #结果为:'True'
print(s.startswith('aa'))  #结果为:'False'
print(s.startswith('woRld', 6))  #结果为:'True'
print(s.startswith('woRld', 6, 8))  #结果为:'False'

# *** endswith 用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
# 可选参数"start"与"end"为检索字符串的开始与结束位置。
s = 'hEllo woRld'
print(s.endswith('h'))    #结果为:'False'
print(s.endswith('ld'))   #结果为:'True'
print(s.endswith('wo', 6, 8))   #结果为:'True'

# *** strip 默认去除字符串左右两边的空格,换行符,制表符,去除的元素可自定义。
s = '   hello world\t'
print(s.strip())  #结果为:'hello world'
s = '12321'
print(s.strip('12'))   #结果为:'3'

# *** lstrip() 只去除左边的
s = '12321'
print(s.lstrip('12'))   #结果为:'321'

# *** rstrip() 只去除右边的
s = '12321'
print(s.rstrip('12'))   #结果为:'123'

# *** replace 把字符串中的 old(旧字符串) 替换成 new(新字符串)。
# 如果指定第三个参数max,则替换不超过 max 次。
s = 'alex 分甘共苦老地方 alex 风刀霜剑卡乐芙'
s8 = s.replace('alex', 'SB')
print(s8)   #结果为:'SB 分甘共苦老地方 SB 风刀霜剑卡乐芙'
s8 = s.replace('alex', 'SB', 1)
print(s8)   #结果为:'SB 分甘共苦老地方 alex 风刀霜剑卡乐芙'

# *** split str ---> list 默认以空格切分字符串,如果num有指定值,则仅分隔 num 个子字符串。
s1 = 'alex wusir taibai ritian'
s2 = 'alex,wusir,taibai,ritian'
s3 = 'alexwusirtaibairitian'
s4 = 'alexwusirtaibairitian'
l1 = s1.split() #结果为:['alex', 'wusir', 'taibai', 'ritian']
print(l1)
l2 = s2.split(',')  #结果为:['alex', 'wusir', 'taibai', 'ritian']
print(l2)
l3 = s3.split('a')  #结果为:['', 'lexwusirt', 'ib', 'iriti', 'n']
print(l3)
l4 = s4.split('a', 2)   #结果为:['', 'lexwusirt', 'ibairitian']
print(l4)

# ***join   list--->str
l1 = ['alex', 'wusir', 'ritian']
print(' '.join(l1)) #结果为:alex wusir ritian

# *** find 通过元素找索引,找不到返回-1
s = 'helloworld'
print( s.find('e') )    #结果为:1
print( s.find('a') )    #结果为:-1

# *** index 通过元素找索引,找不到会报错
s = 'helloworld'
print( s.index('e') )    #结果为:1
print( s.index('a') )    #结果报错:ValueError: substring not found

# *** format 格式化,见“格式化输出”

# *** 字符串由字母或数字组成,返回True或False。
name = '123'
print(name.isalnum())   #结果为:True

# *** 字符串只由字母组成
name = '123'
print(name.isalpha())   #结果为:False

# *** 字符串只由数字组成
name = '123'
print(name.isdigit())   #结果为:True

# 公共方法:
# len 测量个数
s = 'helloworld'
print(len(s))   #结果为:10

# count 计算次数
s = 'helloworld'
print(s.count('l'))   #结果为:3

格式化输出

使用%格式化,若想输出%,则使用另一个%转义

print('我叫%s' % '张三') #输出:我叫张三
print('我叫%s,今年%d,学习进度2%%' % ('张三', 10000)) #输出:我叫张三,今年10000,学习进度2%

format格式化

#第一种用法
s = "我叫{},今年{},爱好{}"
s12 = s.format('张三', '25', '女')
print(s12) #输出:我叫张三,今年25,爱好女

#第二种用法
s1 = "我叫{0},今年{1},爱好{2},我依然叫{0}"
s13 = s1.format('张三', '25', '女')
print(s13) #输出:我叫张三,今年25,爱好女,我依然叫张三

#第三种用法
s3 = "我叫{name},今年{age},他也叫{name}"
s14 = s3.format(age=25,name='张三')
print(s14) #输出:我叫张三,今年25,他也叫张三

列表

append(obj)在列表末尾添加新的元素

l = ['张三', '李四', '王五']
l.append('赵六')
print(l) #输出:['张三', '李四', '王五', '赵六']
l.append([1, 2, 3])
print(l) #输出:['张三', '李四', '王五', '赵六', [1, 2, 3]]

insert(index, obj)将元素插入到列表指定位置

l = ['张三', '李四', '王五']
l.insert(1, '葫芦')
print(l) #输出:['张三', '葫芦', '李四', '王五']

extend(iterable)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

l = ['张三', '李四', '王五']
l.extend('ab')
print(l) #输出:['张三', '李四', '王五', 'a', 'b']
l.extend([1, '2122'])
print(l) #输出:['张三', '李四', '王五', 'a', 'b', 1, '2122']
l.extend(1) #输出:TypeError: 'int' object is not iterable

pop([index=-1]) 按照索引删除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

l = ['张三', '李四', '王五']
ret = l.pop(1)
print(ret) #输出:李四

remove(obj) 按照元素去删除列表中某个值的第一个匹配项。

l = ['张三', '李四', '王五', '李四']
l.remove('李四')
print(l) #输出:['张三', '王五', '李四']
l.remove('赵六') #报错:ValueError: list.remove(x): x not in list

clear() 清空列表,返回空列表。

l = ['张三', '李四', '王五']
l.clear()
print(l) #输出:[]

del 删除列表

l = ['张三', '李四', '王五']
del l
print(l) #报错:NameError: name 'l' is not defined

del 按照索引删除元素

l = ['张三', '李四', '王五']
del l[1]
print(l) #输出:['张三', '王五']

del 按照切片删除

l = ['张三', '李四', '王五']
del l[:2]
print(l) #输出:['王五']

按照索引改

l = ['张三', '李四', '王五']
l[0] = '赵六'
print(l) #输出:['赵六', '李四', '王五']

按照切片去改

l = ['张三', '李四', '王五', '赵六']
l[1:2] = 'abcd'
print(l) #输出:['张三', 'a', 'b', 'c', 'd', '王五', '赵六']

l = ['张三', '李四', '王五', '赵六']
l[:3] = 'a'
print(l) #输出:['a', '赵六']

l = ['张三', '李四', '王五', '赵六']
l[:2] = [11, 22, 33]
print(l) #输出:[11, 22, 33, '王五', '赵六']

l = ['张三', '李四', '王五', '赵六']
l[:3:2] = 'ab' # 加步长时,必须一一对应,不对应则报ValueError异常
print(l) #输出:['a', '李四', 'b', '赵六']

按照索引,切片(步长),同字符串
遍历

l = ['张三', '李四', '王五']
for i in l:
    print(i) #输出(逗号表示换行):张三,李四,王五

其他方法

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)

元组(只读列表)

定义

tu = (1, 2, 33, 'alex')
print(type(tu)) #输出:<class 'tuple'>

其他操作与列表相同

字典

直接赋值,key已存在则修改,key不存在则添加

dic = {'name': '张三', 'age': 28}
dic['name'] = '李四'
dic['sex'] = 'male'
print(dic) #输出:{'name': '李四', 'age': 28, 'sex': 'male'}

setdefault() key已存在则不变,不存在则添加,默认值None

dic = {'name': '张三', 'age': 28}
dic.setdefault('name', '李四')
dic.setdefault('sex')
dic.setdefault('high', 169)
print(dic) #输出:{'name': '张三', 'age': 28, 'sex': None, 'high': 169}

pop() 方法指定key删除对应元素,返回元素的值。删除不存在的key,报KeyError异常。可以通过第二个参数来指定当key不存在时候的返回值,若指定则不会报KeyError异常。

dic = {'name': '张三', 'age': 28, 'sex': '男'}
print(dic.pop('name'), dic) #输出:张三
print(dic) #输出:{'age': 28, 'sex': '男'}
print(dic.pop('name1')) #输出:KeyError: 'name1'
print(dic.pop('name1',None)) #输出:None

popitem() 随机删除,在3.6后总是删除最后一个。返回值是由key和值组成的tuple。如果是空字典,则报KeyError异常。

dic = {'name': '张三', 'age': 28, 'sex': '男'}
rt = dic.popitem()
print(rt) #输出:('sex', '男')
print(type(rt)) #输出:<class 'tuple'>
print(dic) #输出:{'name': '张三', 'age': 28}
print({}.popitem()) #输出:KeyError: 'popitem(): dictionary is empty'

clear() 清空整个字典

dic = {'name': '张三', 'age': 28, 'sex': '男'}
dic.clear()
print(dic) #输出:{}

del 删除字典

dic = {'name': '张三', 'age': 28, 'sex': '男'}
del dic
print(dic) #输出:NameError: name 'dic' is not defined

del 按照键删除元素

dic = {'name': '张三', 'age': 28, 'sex': '男'}
del dic['name']
print(dic) #输出:{'age': 28, 'sex': '男'}
del dic['name1'] #输出:KeyError: 'name1'

直接赋值,当key存在时修改

dic = {'name': '张三', 'age': 28}
dic['name'] = '李四'
print(dic) #输出:{'name': '李四', 'age': 28}

update() 方法将dic里面的键值对覆盖并更新到dic2中,dic本身不变。

dic = {"name": "张三", "age": 18, "sex": "male"}
dic2 = {"name": "李四", "weight": 75}
dic2.update(dic)  # 将dic里面的键值对覆盖并更新到dic2中,dic不变 。
print(dic)  # {'name': '张三', 'age': 18, 'sex': 'male'}
print(dic2)  # {'name': '张三', 'weight': 75, 'age': 18, 'sex': 'male'}

直接读取

dic = {'name': '张三', 'age': 28}
print(dic['name']) #输出:张三
print(dic['name1']) #输出:KeyError: 'name1'

get()方法,若key存在则返回对应的值,若key不存在,默认返回None,第二个参数可以指定当key不存在时的返回值。

dic = {'name': '张三', 'age': 28}
print(dic.get('name')) #输出:张三
print(dic.get('name1')) #输出:None
print(dic.get('name1','没有此键...')) #输出:没有此键...

keys()方法获取字典所有的key,返回一个类似列表的值,但是没有索引。

dic = {'name': '张三', 'age': 28}
l = dic.keys()
print(l) #输出:dict_keys(['name', 'age'])
print(l[0]) #输出:TypeError: 'dict_keys' object does not support indexing

values()方法获取字典所有的值,返回一个类似列表的值,但是没有索引。

dic = {'name': '张三', 'age': 28}
l = dic.values()
print(l) #输出:dict_values(['张三', 28])
print(l[0]) #输出:TypeError: 'dict_values' object does not support indexing

items()方法获取字典所有的键和值,返回一个类似列表的值,但是没有索引。每个元素都是元组,存储着字典的键和值。

dic = {'name': '张三', 'age': 28}
l = dic.items()
print(l) #输出:dict_items([('name', '张三'), ('age', 28)])
print(l[0]) #输出:TypeError: 'dict_items' object does not support indexing

dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val为字典所有键对应的初始值,默认为None。当val是数组时存在,见例3。

dic = dict.fromkeys('abc')
print(dic) #输出:{'a': None, 'b': None, 'c': None}

dic = dict.fromkeys('abc',1)
print(dic) #输出:{'a': 1, 'b': 1, 'c': 1}

dic = dict.fromkeys('abc',[])
dic['a'].append(666) 
print(dic) #输出:{'a': [666], 'b': [666], 'c': [666]}

遍历所有的键

dic = {'name': '张三', 'age': 28}
for i in dic: #默认for循环遍历的就是键
    print(i) #输出(逗号表示换行):name,age

for i in dic.keys():
    print(i) #与上面输出相同

遍历所有的值

dic = {'name': '张三', 'age': 28}
for i in dic.values():
    print(i) #输出(逗号表示换行):张三,28

遍历所有的键和值

dic = {'name': '张三', 'age': 28}
for k, v in dic.items():
    print(k, v) #输出(逗号表示换行):name 张三,age 28

其他

分别赋值

a, b = 1 ,3
print(a,b) #输出:1 3
a, b = [22, 33]
print(a,b) #输出:22 33

range(start, stop[, step]) 函数可创建一个整数列表(只是和列表类似),一般用在 for 循环中。

r = range(10)
print(r) #输出:range(0, 10)
print(type(r)) #输出:<class 'range'>
for i in range(5):
    print(i) #输出(逗号表示换行):0,1,2,3,4
for i in range(3,5):
    print(i) #输出(逗号表示换行):3,4
for i in range(0, 10, 2):
    print(i) #输出(逗号表示换行):0,2,4,6,8
for i in range(5,0,-1):
    print(i) #输出(逗号表示换行):5,4,3,2,1

常见的坑

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • Day02的课程要点记录详细教程地址:金角大王 - Day1 Python基础1金角大王 - Day2 Pytho...
    乘风逐月阅读 466评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,936评论 17 410
  • 概述 本文首发于我的个人博客JDK Timer实现详解,严禁转载。定时器是工程开发中比较常用的工具,本文研究JDK...
    winwill2012阅读 986评论 0 0
  • 没有谁甘愿受人压迫,一个人被另一个人奴役,不是因为这个人强而另一个人弱,而是因为那里奉行暴力逻辑,强者的力量未能...
    云丹风卿阅读 166评论 0 0