在python中,可变变量 : list 和 字典,不可变变量:元组、字符串
li = [1,1,2,3,4,5,6,7,8,9]
# li2 = li[:] #深拷贝 不同的内存地址
li2 = li #浅拷贝 相同的内存
print('这里li的内存地址',id(li))
print('这里是li2的内存地址',id(li2))
for i in li2: #深拷贝循环的结果是[2, 4, 6, 8],浅拷贝循环的结果是:[1, 2, 4, 6, 8]
if i%2!=0:
li.remove(i)
print(li)
#在循环list的时候不能删东西
#字符串这些方法都不会改变原来字符串的值
name = 'besttest'
# new_name = name.strip() #默认是去掉两边的空格和换行符
# new_name= name.lstrip() #默认是去掉左边的空格和换行符
# new_name= name.rstrip()#默认是去掉右边边的空格和换行符
# new_name = name.count('t')#查找某个字符串在字符串里面出现的次数
# index = name.find('d')#找到这个字符串,返回它的下标,如果不存在的话,返回-1
# index = name.index('d')#找到这个字符串,返回它的下标,如果不存在的话,报错
# print(name.upper())#把所有字母都变成大写的
# print(name.lower())#把所有字母都变成小写的
file_name = 'a.xls'
# print(file_name.endswith('.xls'))#判断一个字符串是否以xx结尾
sql = 'select * from user; select'
sql.startswith('select')#判断一个字符串是否以xx开头
# f = '{name} 欢迎光临 age :{age} '
# print(f.format(name='原宝青'))#字符串格式化
# d = {'name':'yuanbaoqiang','age':18}
# print(f.format_map(d))#字符串格式化,它传进去的是一个字典
new_sql = sql.replace('select','update')#字符串替换,第一个old,new
# print(new_sql)
# print('122s'.isdigit())#是否是数字
# print('&'.isalnum()) # 是否包含数字或字母
# st = 'a b c d f g'
# st_list = st.split()#如果什么都不写的话,是按照空格分割
# print(st_list)
new_name = name.capitalize()#首字母大写
name.center(50,'*') #把字符串放中间,两边用*补齐
# print('aaAA'.islower()) # 是否是小写字母
# print('AAaa'.isupper()) # 是否是大写字母
# print('sdfsdf'.isalpha()) # 是否是英文字母
slit = ['a', 'b', 'c', 'd', 'f', 'g']
s2='hhhhhhhhhh'
tu = (1,2,3,4,5)
d={'name':'nnn','age':18,'sex':1}
res = '*'.join(d)
print(res) 结果是:sex*name*age
res = '*'.join(s2)
print(res) 结果是:h*h*h*h*h*h*h*h*h*h a*b*c*d*f*g
res = '*'.join(slit)
print(res) 结果是:a*b*c*d*f*gres = '*'.join(tu)
print(res) 结果是: 报错
1、字符串截取,变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾
例如:
str = '0123456789′
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取
2、替换字符串replace(), 变量.replace("被替换的内容","替换后的内容"[,次数]),替换次数可以为空,即表示替换所有。要注意的是使用replace替换字符串后仅为临时变量,需重新赋值才能保存
例如:
str = 'akakak'
str = str.replace('k',' 8') # 将字符串里的k全部替换为8
print(str)
>> 'a8a8a8' # 输出结果
3、字符串分割:变量.split("分割标示符号"[分割次数]),分割次数表示分割最大次数,为空则分割所有,返回结果为list
例如:
src='niuhanyang,12345'
new_src=src.split(',')
print(new_src)
print(new_src[0])
print('1+2+3 1+2+3+4'.splitlines())#换行符分割,返回一个list
4,拼接字符串join(),将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
例如:
print('+'.join(('hehe','haha','ee')))#以+拼接字符串
print(''.join(('hehe','haha','ee')))#拼接字符串
5,去掉指定字符lstrip(),rstrip(),strip(),生成一个新的字符串,参数为空时,默认为去掉空格和换行
例如:参数为空情况
print('lstrip:',' mysql '.lstrip())#默认去掉左边的空格和换行
print('rstrip:',' mysql '.rstrip())#默认去掉右边的空格和换行
print('strip:',' mysql '.strip())#默认去掉两边边的空格和换行
6,查找find()、rfind(),ps:find()与index()功能相同,只是find找不到是返回-1,而index会直接报错,影响程序执行
语法:
str
.find(
str
, beg
=
0
end
=
len
(string))
str -- 此选项指定要搜索的字符串。
beg -- 这是开始索引,默认情况下为 0。
end -- 这是结束索引,默认情况下它等于字符串的长度
例如:
str1 = "this is oo is string example"
str2 = "exam"
print(str1.find(str2))
print(str1.find(str2, 10))
print(str1.find(str2, 40))
print(str1.rfind('is'))#返回从右边开始计算字符的下标,例如is从左边开始下标是5,右边是11
字符串和字符串操作
上面说了存数字,那要是想存自己的名字呢,那用int类型的就不行了,不能一个人的名字叫数字吧,这样怎么办呢,就有另一种数据类型应运而生,就是字符串,它可以存任意类型的字符串,比如名字,一句话等等。
1
2
|
name = 'Sriba'
msg = 'Welcome to my blog.'
|
字符串还有很多内置的方法,对字符串进行操作,常用的方法如下,下面注释带有是否的,返回的都是一个布尔值:
1
2
3
4
5
6
7
8
9
10
|
name = 'my name is {name},age is {age}.'
print(name.capitalize())#大写
print(name.center(50,'-'))#50个-,把name放中间
print(name.endswith('u'))#是否以x结尾
print(name.expandtabs(30))#补 的次数
print(name.find('n'))#查找字符串的索引
print(name.format(name='niuniu',age=18))#这个是格式字符串,再第一节的博客里面已经写了
print(name.format_map({'name':'niuniu','age':19}))#这个也是格式化字符串,后面跟的是一个字典,字典在后面也会写
print('abA123'.isalnum())#是否包含数字和字母
print('abA'.isalpha())#是否是英文字母
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
print('122'.isdigit())#是否是数字
print('aa'.isidentifier())#是否是一个合法的变量名
print('aa'.islower())#是否是小写字母
print('AA'.isupper())#是否是大写字母
print('Loadrunner Book'.istitle())#是不是一个标题,判断首字母是否大写
print('+'.join(['hehe','haha','ee']))#拼接字符串
print(name.lower())#变成小写
print(name.upper())#变成大写
print('
mysql
'.lstrip())#默认去掉左边的空格和换行
print('
mysql
'.rstrip())#默认去掉右边的空格和换行
print('
mysql
'.strip())#默认去掉两边边的空格和换行
p = str.maketrans('abcdefg','1234567')#前面的字符串和后面的字符串做映射
print('cc ae gg'.translate(p))#输出按照上面maketrans做映射后的字符串
|
1
2
3
4
5
6
7
8
|
#下面是反解
new_p = str.maketrans('1234567','abcdefg')
print('cc ae gg'.translate(new_p))
print('mysql is db.'.replace('mysql','oracle',1))#替换字符串
print('mysql is is db'.rfind('is'))#返回最右边字符的下标
print('1+2+3+4'.split('+'))#切割字符串,返回一个list
print('1+2+3
1+2+3+4'.splitlines())#按照换行符分割
print('Abcdef'.swapcase())#大小写反转
|