字符串读取:
names=['NJ','JS','SZ','BJ','JS','LYG','JS','GZ','TG','nj','1','#']
print(names[1:2])
print(names[4])
print(names[::2])# 每隔两个元素,获取一个
print(names[1:-1])
print(names[-1:1])
print(names[1][0])
运行结果:
['JS']
JS
['NJ', 'SZ', 'JS', 'JS', 'TG', '1']
['JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1']
[]
J
追加&复制&统计&合并
names=['NJ','JS','SZ','BJ','JS','LYG','JS','GZ','TG','nj','1','#']
names.append(['123','456']) #追加,默认追加到列表最后面
print(names)
#names.clear()
names_copy=names.copy() #复制一份列表
print(names_copy)
print(names.count('JS')) #统计字符串个数
names.extend(['111','222']) #追加,合并列表
print(names)
运行结果:
['NJ', 'JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456']]
['NJ', 'JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456']]
3
['NJ', 'JS', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456'], '111', '222']
插入&索引&反转&排序
names.insert(2,'b') #把字符b插入到列表里,1是插入的位置
print(names)
print(names.index('LYG')) #打印LYG的下标
print(names.pop()) #默认删除最后一个
print(names.pop(2)) #指定删除位置,并打印删除的字符
names.reverse() #反转列表
print(names)
names.remove(['123', '456']) #移除
print(names)
names.sort() #给列表排序g
print(names)
运行结果:
['NJ', 'JS', 'b', 'SZ', 'BJ', 'JS', 'LYG', 'JS', 'GZ', 'TG', 'nj', '1', '#', ['123', '456'], '111', '222']
6
222
b
['111', ['123', '456'], '#', '1', 'nj', 'TG', 'GZ', 'JS', 'LYG', 'JS', 'BJ', 'SZ', 'JS', 'NJ']
['111', '#', '1', 'nj', 'TG', 'GZ', 'JS', 'LYG', 'JS', 'BJ', 'SZ', 'JS', 'NJ']
['#', '1', '111', 'BJ', 'GZ', 'JS', 'JS', 'JS', 'LYG', 'NJ', 'SZ', 'TG', 'nj']
拷贝番外篇:
1、copy模块
import copy #运用模块
list_copy=['11','22','33','44',['Shenzhen',['11','22'],'Guangzhou','Changsha'],'55','66']
print(list_copy)
list_deep=copy.deepcopy(list_copy) #深copy(看下面注解)
list2=copy.copy(list_copy) #浅copy(看下面注解)
list_copy[4][1][0]='aa'
list_copy[2]='cc'
print(list_copy)
print(list_deep)
print(list2)
运行结果:
['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #原始数据
['11', '22', 'cc', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66']
['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #deepcopy结果
['11', '22', '33', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66'] #浅copy结果
2、copy()
list_copy=['11','22','33','44',['Shenzhen',['11','22'],'Guangzhou','Changsha'],'55','66']
list1=list_copy.copy()
print(list1)
list_copy[4][1][0]='aa'
list_copy[2]='cc'
print(list_copy)
print(list1)
运行结果:
['11', '22', '33', '44', ['Shenzhen', ['11', '22'], 'Guangzhou', 'Changsha'], '55', '66']
['11', '22', 'cc', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66']
['11', '22', '33', '44', ['Shenzhen', ['aa', '22'], 'Guangzhou', 'Changsha'], '55', '66']
注:
深copy与浅copy
共同点:不会因为列表的父层变动而变动
不同点:子列表修改时,浅copy会跟随变动而变动,而深copy不会变动。
extent()函数与append()函数区别
注:def是 python的函数,后面会介绍。
def changeextent(str):
'Please string with extent'
info.extend(['40','50','60']
print('extent>>>',info)
return
def changeappend(str):
'Please string with append'
info.append(['70','80','90']
print('append>>>',info)
return
info= ['10','20','30']
changeappend(info)
print('Please append str',info)
changeextent(info)
print('Please extent str',info)
运行结果:
append>>> ['10', '20', '30', ['70', '80', '90']]
Please append str ['10', '20', '30', ['70', '80', '90']]
extent>>> ['10', '20', '30', ['70', '80', '90'], '40', '50', '60']
Please extent str ['10', '20', '30', ['70', '80', '90'], '40', '50', '60']
结论:
1.列表可以包含任何数据类型的元素,单个列表中的元素无须全为同一个类型
2.append()函数只在尾部追加
3.列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。extent()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
字符串常用操作:
#字符串常用操作
list='abccd'
lis='!!'
print(list.count('C')) #统计字符
print(list.capitalize()) #首字母大写 等同于print('abc'.title())
print(list.center(50,'-')) # 保持字符串在中心位置,不够的用(-)补足。
# list.encode() 指定编码格式编码字符串
print(list.endswith(lis)) #用于判断字符串是否有指定后缀结尾,如果有则返回True,否则False
list_t='aaa\tbbbcccddd'
print('原始str:',list_t) #
print('替换 \\t:' + list_t.expandtabs()) #把字符串里面\t转换为空格
print('用10空格替换 \\t:'+ list_t.expandtabs(tabsize=10)) #将Tab键,转换为10个空格
print(list_t.find('a')) #查找字符所在位置(查下标)
print('网名:{name},网址:{url}'.format(name='baidu',url='http:///www.baidu.com')) #格式化字符串,作用等同于%,不过format部分类型,操作更简单。
# 推荐使用,这里就不细讲了,后面会补充格式化字符串相关博客
'''
list_t.format_map() #有兴趣的自己查阅资料
list_t.index() # 检测是否包含子字符串str,如果指定beg(开始)和end(结束)范围,则检查是否包含在指定范围内,该方法与find()方法一样,只不过str不在string会报错
list_t.isdigit() #检查字符串为整数则返回 真。
list_t.isidentifier() #判断呢是不是一个合法的标示符。了解即可
list_t.isalnum() #检测字符串是否由字母和数字组成,True&False
list_t.isalpha() #检测字符串是否由字母组成,True&False
list_t.isdecimal()#检测字符串是否只包含十进制字符。这种方法只存在与unicode对象,True&False
list_t.isnumeric() #检测字符串是否由数字组成。这种方法只存在与unicode对象,True&False
list_t.isprintable() #
list_t.isspace() #检测字符串是否由空白字符组成 True&False
list_t.istitle()#检查字符串是否首写字母为大写,其他为小写 True&False
list_t.islower() #检测字符串是否由小写字母组成 True&False
list_t.isupper() #检测字符串是否由大写字母组成 True&False
'''
运行结果:
0
Abccd
----------------------abccd-----------------------
False
原始str: aaabbbcccddd
替换 \t:aaa bbbcccddd
用10空格替换 \t:aaa bbbcccddd
0
网名:baidu,网址:http:///www.baidu.com
list_t=('a','b','c')
print('+'.join(list_t)) #通过指定字符链接序列中元素后生成新的字符串
运行结果:
a+b+c
#.maketrans() #用于创建字符映射的转换表,对于接受的两个参数的最简单调用方式,第一个参数为字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
#语法:
maketrans()方法语法:
str.maketrans(intab, outtab)
参数
intab -- 字符串中要替代的字符组成的字符串。
outtab -- 相应的映射字符的字符串。
#两个字符长度一致,必须一一对应。
intab1 = "aeiou"
outtab1 = "12345"
trantab1 = str.maketrans(intab1, outtab1)
str = "this is string example....wow!!!"
print (str.translate(trantab1))
运行结果:
th3s 3s str3ng 2x1mpl2....w4w!!!
translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。
语法
translate()方法语法:
str.translate(table[, deletechars]);
bytes.translate(table[, delete])
bytearray.translate(table[, delete])
参数
table -- 翻译表,翻译表是通过 maketrans() 方法转换而来。
deletechars -- 字符串中要过滤的字符列表。
返回值
返回翻译后的字符串,若给出了 delete 参数,则将原来的bytes中的属于delete的字符删除,剩下的字符要按照table中给出的映射来进行映射 。
字符串补位:
list_t='abc'
print(list_t.ljust(10,'*')) #保证字符串长度为10,不够用*号补位,补在字符串后面
print(list_t.rjust(10,'*')) #保证字符串长度为10,不够用*号补位,补在字符串前面
运行结果:
abc*******
*******abc
字符串大小写:
list_t='abc'
list_l='EDC'
print(list_l.lower()) #字符串大写变小写
print(list_t.upper()) #字符串小写变大写
运行结果:
edc
ABC
移除字符:(strip 用于移除字符串两边的字符,默认移除空格)
str = "*****this is string example....wow!!!*****"
print (str.strip( '*' )) #去掉两边 *号字符
print(str.lstrip('*')) #去掉左边 *号字符
print(str.rstrip('*')) #去掉右边 *号字符
运行结果:
this is string example....wow!!!
this is string example....wow!!!*****
*****this is string example....wow!!!
切片:
print('ALex Li'.rfind('L')) # 与find相反,已右边第一个为准输出下标
print('1=2=3=4'.split('=')) #通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
print('abc'.title()) #首字母大写
print('Ab'.swapcase()) #字母大小,反写。 大的变小,小的变大
运行结果:
5
['1', '2', '3', '4']
Abc
aB
替换:
print('Alex li'.replace('l','L',1)) #替换字符。把l替换成L。默认替换所有,后面可以指定替换个数。
运行结果:
ALex li
'''
.splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符
.startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
.rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。
.replace() #replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
.zfill() # zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
'''