【python学习日记】字符串与数据结构

1.字符串


三个引号中字符串会保持传入的格式

连接字符串使用‘+’号,重复输出字符串‘*’号

数字转换为字符串 str(8)

在字符串前加上r或R表示该字符串是非转义的原始字符print(r'C:\Windows\System32')

TypeError错误,为数据类型不正确,若遇到此错误可以检查报错位置的数据类型是否正确

是否存在(in\not in):

    str1 in str,判断str1字符串存于str2字符串中,存在返回True,否则False

    str1 not in str,判断str1字符串不存于str2字符串中,与in相反

转义字符

    \\ 反斜杠符号

    \' 单引号

    \" 双引号

    \n 换行

    \t 横向制表符

    1.1字符串的切片

字符串中每个字符都分配一个数字索引,第一个索引是0,第二个索引是1,依此类推。

获取单个字符——str[index] index为下标索引,从0开始,如果索引为负数则是倒着开始

print("Hello"[0])  # 获取第一个字符,字符获取从0开始,第二个字符为1

print("Hello"[2])  # 获取第三个字符

print("Hello"[-1])  # 获取倒数第一个字符,使用负数表示获取倒数第几个字符

获取多个字符——str[start:end] 读取索引start开始到索引为end-1 结束的字符 。

print(a[1:3])  # 获取索引1到2的字符

print(a[:4])  # 获取前4位

print(a[5:])  # 获取从索引号5开始后面的字符串,包括索引号5的字符

print(a[5:-1])  # 获取从索引号5开始后面的字符串,不包括最后一位

print(a[-5:-1]) # 获取倒数第5位到倒数第1位,不包括最后一位

通过步长截取——str[start:end:step] 读取索引start开始每相隔step读取字符到索引为end-1结束

a = 'Hello,World!'

print(a[1:10:2])  #表示从第二个字符开始截取,间隔2个字符取一个,输出结果:el,ol

补充

print(a[::2])  # 隔两个截取一个字符串             print(a[::-1])  # 字符串倒叙,有意思的方式~

    1.2字符串函数

需要一个变量来接收处理后的字符串a=string.strip(),将string.strip()得到的值传递给a,其中string的值没有被改变。

v = '我是一个大帅哥 '

print(v.replace('帅哥', '美女')) # 替换字符串,帅哥替换从美女,输出 我是一个大美女

print(v.strip())  # 去除左右空格,输出 我是一个大帅哥

print(v.split('是'))# 拆分字符串,返回list,输出 [' 我', '一个大帅哥 ']

print(v.find('我')) # 查找字符串,返回索引号,输出 1

m = 'python'

print(m.upper()) # 将字符串全部转为大写,输出 PYTHON

print(m.lower())  # 将字符串全部转为小写,输出 python

print(m.title()) # 将字符串单词的第一个字母转为大写,其它字母小写,输出 Python

#字母处理

1.string.capitalize()将字符串的第一个字符转换为大写

2.string.title()将字符串的第一个字符转换为大写

3.string.swapcase()字符串小写字符转为大写,大写字母转为小写

4.string.upper()将字符串全部转为大写

5.string.lower()将字符串全部转为小写

#去除空格或者指定字符串

1.string.strip([chars])去除字符串中首尾的字符串,不带参数默认去除空格,注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。print(v.strip('我'))

2.string.lstrip([chars])去除字符串左边字符串,string.rstrip([chars])去除字符串右边字符串

#格式化对齐

1.string.center(width[, fillchar])返回居中的字符串,width为字符串的总宽度,两边用一个字符fillchar填充,默认为空格,如果指定的长度小于原字符串的长度则返回原字符串。注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常print('www.baidu.com'.center(40, '*'))

2.string.ljust(width[, fillchar])返回原字符串左对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于原字符串的长度则返回原字符串。print ('www.baidu.com'.ljust(50, '*'))

3.string.rjust(width[, fillchar])返回原字符串右对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于字符串的长度则返回原字符串。print ('www.baidu.com'.rjust(50, '*'))

4.string.zfill()返回指定长度的字符串,原字符串右对齐,前面填充0,print ('lalalalala'.zfill(20))

#替换

1.string.replace(old, new[, count])用新的字符替换老字符,可以指定替换的个数,默认全部替换

2.string.expandtabs([n])将字符串中(tab符号)\t转换成n个空格,默认的空格数是 8

#字符串搜索

1.string.find(sub [,start [,end]])返回sub字符串第一次出现的索引位置,可以通过start和stop参数设置搜索范围,如果未找到sub时返回-1

2.string.rfind(sub [,start [,end]])返回sub字符串最后一次出现的索引位置,如果没有匹配项则返回-1,可以通过start和stop参数设置搜索范围

3.string.index(sub [,start [,end]])类似于string.find()方法。注意:未找到sub时会报出异常

4.string.rindex(sub [,start [,end]])类似于string.rfind()方法。注意:未找到sub时会报出异常

#字符串分割

1.string.split([sep [,maxsplit]])用来根据指定的分隔符将字符串进行分割,不包含分隔符,结果存为列表,不指定sep时,默认将将空格作为分隔符

2.string.partition(sep)用来根据指定的分隔符将字符串进行分割,分割点为首次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则后面2个元素为空

3.string.rpartiton()用来根据指定的分隔符将字符串进行分割,分割点为最后一次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则前面2个元素为空

#字符串判断

1.string.isupper()返回字符串中是否全为大写 --> True/False

2.string.islower()返回字符串中是否全为小写 --> True/False

3.string.isdigit()返回字符串中是否只包含数字 --> True/False

4.string.isalpha()返回字符串中是否只包含字母 --> True/False

5.string.isalnum()返回字符串中是否只包含字母或数字 --> True/False

6.string.isspace()返回字符串中是否只包含空格(tab也算空格) --> True/False

7.string.istitle()返回字符串中首字母是否大写 --> True/False

8.string.startswith(prefix[, start[, end]])返回字符串是否以某字符串开始,可以通过start和stop参数设置搜索范围

9.string.endswith(suffix[, start[, end]])返回字符串是否以某个字符串结束 可以通过start和stop参数设置搜索范围

#其它

1.string.count(sub[, start[, end]])计数字符串中某子集的数量,可以通过start和stop参数设置搜索范围

2.len(string)获取字符串的长度

3.list(string)字符串转列表

4.string.join(iterable)列表转字符串,用于将序列中的元素以指定的字符string连接生成一个新的字符串。注意:iterable只能是字符串类型,否则会报出异常

5.string.encode(encoding='UTF-8',errors='strict')以 encoding 指定的编码格式编码字符串

6.string.decode(encoding='UTF-8',errors='strict')解码字符串,出错默认报ValueError,除非errors是ignore或replace

7.string.translate(table [,deletechars])根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到deletechars参数中

8.string.format(*args, **kwargs)它通过{}和:来代替%、金额的千位分隔符print ('{:,}'.format(123456789)) #输出123,456,789


2.数据结构

    2.1 List列表

定义:使用中括号 [] ,里面数据可以是任意类型,也包括列表本身,也可以是字典、元组等。list1 = [2017, 'A', True, list1, list2]

访问:list列表中的每个元素都分配一个数字索引,从0开始,-1为列表倒数第一个。访问list时索引号不能越界,不然会抛出异常,IndexError: list index out of range

修改和新增列表的值:可直接通过索引号修改列表的值,也可通过append()方法对列表增加值。l.append('末尾追加元素')  (还可使用list1.insert(index,obj)方法在列表指定位置插入值,后面元素向后移一位,第一个参数为索引号,第二个参数是待添加的新元素

删除元素:最常用到pop(),其次remove(),最后是del

l.pop(索引号) 是通过列表索引号来删除list元素的方法;不指定索引号时删除最后一个元素;一次只能删除一个元素。l.pop(0)  # 删除列表第一个元素

l.remove() 根据给定值查找列表,找到符合条件的第一个值删除,只能一次删除一个。删除不存在的值会抛出ValueError异常

del 变量名 ,del是删除变量,list列表中的值其实都是一个一个的变量如list[0]、list[1]都是他们的变量名。del list1[0:2]  # 删除列表第一到第二个元素  del list1  # 删除整个列表

列表切片

list[初始位置:结束位置]  list[0:N]从0开始取到list的索引号N-1为止,注意如果结束位超过列表长度不会报错。list[初始位置:结束位置:步长]  步长表示每多少个取一个,list[0:N:M] 从0开每M个数取一个直到list的N-1元素为止。

print(list1[::-1])  # list倒叙

print(list1[-3:-1])  # 倒数第三个到第二个

print(list1[-4:-1:2])  # 从倒数第4个每2个取一个,到代数第二个

列表常用运算

l1 = [1, 2, 3] + ['a', 'b', 'c'] # 连接

l2 = ['Hello!'] * 4  # 重复复制

ain= 'a' in list1  # 元素是否存在

list列表常用函数

len(list) 返回列表的长度

max(list) 返回列表中元素最大值,必须是相同类型对比

min(list) 返回列表元素最小值,必须是相同类型对比

list(tuple) 将元组转换为列表

list列表常用方法

list.append(obj) #在列表末尾添加新的对象

list.count(obj) #统计某个元素在列表中出现的次数

list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值

list.index(obj) #从列表中找出第一个匹配项的索引位置

list.insert(index, obj) #将对象插入列表index位置

list.pop(obj=list[-1]) #移除列表中的一个元素(默认最后一个),返回移除值

list.remove(obj) #移除列表中的第一个匹配到的值

list.reverse() #反向列表中元素

list.sort(cmp=None, key=None, reverse=False) #对原列表进行排序

list.clear() #清空列表

list.copy() #复制列表

    2.2 tuple元组

定义:tuple元组是有序的,一旦定义了元组我们就不能修改它。元组中可以包含list列表,元组中list列表的值是可变的。

tuple1 = ('a',)  # 当我们定义元组只有一个值时不要忘记后面的逗号

tuple2 = ('woodman', '2017', l, t2)  # 元组中可以包含列表和元组

tuple3 = () # 定义空元组

元组的访问、切片、运算与list列表一样

    2.3 set集合

无序不重复元素的序列        set(('apple',))         set(('apple','pear','banana'))

    2.4 dict字典

定义:字典的每个值都具备自己独有的名称即键(key),每个key都有对应的值(value),字典中的key和value必须成对出现。整个字典包括在花括号‘{}’中,它的每个键值对使用冒号(:)分割,每对值之间用逗号(,)分割,一个key:value 算作一个值。

dict字典用的键(key)必须是唯一的,但值则不必。一个字典中不能出现相同名称的键(key),但值能相同,值可以是任何数据类型(字符串、数字、元组、列表、字典等)。dict的最大特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样

dict1 = {'a': 344323, 2.5: True, 'Bobo': ['a', 3, '阿奇'],233424: {'Alan': 99}}

访问:

print(dict1[2.5])通过 key 访问 dict 的 value,只要 key 存在,dict就返回对应的value。如果key不存在,会直抛出 KeyError 异常(避免KeyError错误:第一种使用 key in dict 选判读字典中是否存在此key;另一种是dict自带的get方法dict.get(key),在Key不存在的时候,返回None。) print(dict1.get(2.5))

dict.keys() # 获取所有键key的迭代器

dict.values() # 获取字典所有的值value的迭代器

新增与修改:

dict1[key] = value 当key不存在字典中时为新增值,存在则是修改它的值

dict1.update(otherdict) 批量更新或增加值,根据otherdict字典更新dice字典,otherdict中有dict1没有的值就新增,dict1中有的值就修改为otherdict中的值

注意:key一旦定义就不能修改

删除:

dict.pop(key) 删除对应键值对,返回移除值的values

dict.clear() 清空dict,dict能访问为空

del dict[key] 删除对应键值对

del dict 删除dict,dict无法访问

遍历:

通过key遍历     for key in dict1:

                                print(dict1[key])

通过dict.items遍历     for key, value in dict1.items():

                                           print(key, ':', value)

字典常用函数&方法

len(dict) 计算字典元素个数,即键的总数

str(dict) 输出字典,以可打印的字符串表示

dict.clear() 删除字典内所有元素

dict.copy() 返回一个字典的浅复制

dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值

dict.items() 以列表返回可遍历的(键, 值) 元组数组

dict.keys() 以列表返回一个字典所有的键

dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dict.update(dict2) 把字典dict2的键/值对更新到dict里

dict.values() 以列表返回字典中的所有值

pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)

格外注意

1、字典的键值对是无序的(Python3.6 开始有序),值可修改,定义字典时键值(key=>value)必须成对出现;

2、字典的键(key)不可以重复,键重复时值以最后一个为准;

3、字典的键必须不可变,所以可以用数字,字符串或元组充当,而不能用列表等;

Python 字典操作进阶——http://www.imooc.com/article/36677(以后学习)


str ="runoob.com"

print(str.isalnum())# 判断所有字符都是数字或者字母 ,输出False

print(str.isalpha())# 判断所有字符都是字母,输出False

print(str.isdigit())# 判断所有字符都是数字,输出False

print(str.islower())# 判断所有字符都是小写,输出True

print(str.isupper())# 判断所有字符都是大写,输出False

print(str.istitle())# 判断所有单词都是首字母大写,像标题,输出False

print(str.isspace())# 判断所有字符都是空白字符、\t、\n、\r,输出False

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

推荐阅读更多精彩内容