一、元组也是一种列表。并且是不可以改变列表类型。
可变类型和不可变类型。举个栗子:
a = 1
b = 2
b = a
print(‘第一次b的值:’,b)
a=2
print('第二次b的值:‘,b)
答案是:第一次的值:1,第二次的值:1
变量a,b的值是可以通过重新赋值的方式改变。
而元组的特点就是:一旦定义好,就不能再变了。
cities = ('beijing','shanghai')
print(cities[0])
print(cities.count('beijing')) #元组可以计算元素出现的次数
print(cities.index('beijing')) #元组可以查看元素第一次出现的顺序。
二、字符串也是一旦定义好,就不能修改了,除非重新对他赋值。举个栗子
str=“abcDEFabc”
str = str.replace('abc',' ')
print(str)
结果是:abcDEFabc
str= str.replace('abc',' ') 如果换成:str1= str.replace('abc',' ') 再把打印str1就出来
切片:就是一种取值的方式。可以用于列表和字符串。下面是列表的切片取值方法
先构造一个list:
string模块里面包含几个方法,可以导入string模块:
import string
num = list(string.digits) 实现的是把一组数字的字符串转化为一个list
print(num) 打印列表的全部内容
print(num[::-1]) 第二个冒号后面值代表步长,是隔几个元素取一次,步是负数的话,从右往左开始取值
print(num[:3]) 顾头不顾尾,如果开始的下标不写的话,那么就是从最前面开始
print(num[-1]) -1代表最后一个元素
print(num[1:]) 如果后面下标不写的话,代表取到最后
print(num[:]) 开头的下标和结尾的下标都不写的话,代表取整个list
有一个有趣儿的小代码(一)
a = [1,1,2,3,4,5,6,78]
b=a[:]
for i in b:
if i%2==0:
a.remove(i)
print a #输出的是1,1,3,5
但是如果代码调整一下。结果就会不一样
a = [1,1,2,3,4,5,6,78]
for i in a:
if i%2==0:
a.remove(i)
print a #输出的是 [1, 1, 3, 5, 78]
列表是按下标去找元素的,当满足条件的被删除以后下,标就是又重新编号了,而循环还是按原来的顺序进行。
再来一个测验题:不能引入第三方变量的情况下,把这个两个值交换。
a= 1 b=2
[方法]1
a = a+b #3=1+2
b=a-b #1=3-2
a = a-b
【方法】2
b,a=a,b
二、字典
字典中的元素是以键值对的方式存储的。元素的存取是无序的。比如:
shenyang = { 'name':'沈阳',
'age':18,
'sex':'不知道',
'addr':'天通苑',
'qq':19823423,
'email':'shenyang@qq.com',
}
可以对字典进行增删改查操作
增:
shenyang[“女朋友”]="漂亮" #也可以是赋值
shenyang.setdefault('age',18) #setdefault这种方式,如果key已经存在,不管它,如果key不存在的话,就新增。
改:
shenyang[“女朋友”]="很漂亮"
删:
shenyang.pop("女朋友”) #通过key的方式删除,如果key不存在,会报错。
del shenyang[age] 通过这个方式删除,如果key不存在,不会报错
查:
shenyang['name']
shenyang.get("name",“沈阳”)
shenyang.pop[‘name']
shenyang.clear() #清空字典
shenyang.popItem["’] #随机删除
yaoyuan = {'chouyan':'1包','name':'姚远'}
shenyang.update(yaoyuan) #把一个字典加入到另外一个字典里面
遍历字典的方法:
for k,v in shenyang.iteams():
print(k,v)
高效循环字典的方法:
for i in shenyang:
pring(i,i.get(i)) #根据key去获取对应的value
判断元素在字典中是否存在,是判断k字典的key存不存在。
if i in shenyang:
三、字符串
字符串的常用方法如下:
name = “the apple”
name.captalize() #把字符串的首字母大写
name.upper() #全变成大写的
name.lower() #全变成小写的
name.center(100,'-') #字符居中。‘,’前面表示填充后真个字符串的长度。‘,‘后面表示使用哪种符号填充。
name.count(‘p’) #查询出现的次数
name.index('a' ) #a在字符串中第一次出现的下标号,找不到下标的时候会报
name.find('a') #查找元素a的下标,没有找到不会报错,返回-1
name.isalnum() #字符串只能有数字或是字母
name.isalpha() #判断是否只为英文,汉字也可以
name.isdigit() #判断是否为纯数字
name.isspace() #判断是否全都是空格
name.endwith('.jpg') #判断字符串是否以xx结尾
name.startwith('a') #判断字符串是否以xx开头
name. strip() #去掉字符串两边的东西,默认是去掉两边的空格和换行符
name.lstrip() #只去掉左边的
name.rstrip() #只去掉右边的
name.replace(‘old’,‘new’)# 替换字符串,把前面的替换为后面的
name.zfill(2) #在前面补0
a="abc,def,ghi,jkl'
print(a.split(',')) #1、分隔字符串2、把字符串变成一个list3、默认是按空格或者换行符分隔。
stu=['123','456','789']
print('-'.join(stu) #1、把list拼接成字符串 2、以某个字符串连接
字符串的一些方法包含在string模块中。使用前先导入。
import string
string.ascii_letters #所有的大写+小写字母
string.ascii_lowercase #所有的小写字母
string.ascii_uppercase #所有的小写字母
string.digits #所有的数字
string.punctuation #所有的特殊字符
print(name[1]) #字符串也是可以根据下标来取值的
非空即真,非0即真。实现同样的功能,代码越少越牛逼
a = []
b = 'niuhanyang' #not的意思是取反
c = ()
d = 0
e = None
if a:
print('真‘’)
else:
多为字典:
字符串的格式化有三种方式:
第一种:使用【+】链接
msg=“欢迎登录:”+name+"今天的日期是:"+datetime.datetime.today()
第二种:使用%s连接
msg="欢迎登录%sname,今天的日期是:%s" %(name,datetime.datetime.today()
如果参数数量比较多,需要按参数出现的顺序填写,一一对应关系。
sql = ‘insert into my_user value(%s,%s,%s,%s,%s) ’ %('id,name,sex,addr,phone)
第三种:使用format 连接
msg="欢迎登录{name},今天的日期是:{today}"
msg=msg.format(name='Python',today=datetime.datetime.today())
参数的数量比较多的时候,可以不按参数出现的顺序写
sql="insert into my_user value({id},{name},{sex},{addr},{phone})“
sql=sql.format(id='1',addr='huilongguan',phone=12222,sex='male',name='Mario')
还可以{}里面不填写参数:这时候参数需要按顺序填写
sql=‘insert into {} value {}’.format('my_user','abc')
format_map 是传递一个字典。字典里面的key和value与参数出现的顺序是对应的
user={'name':'Mario','sex':'male"}
sql='insert into My_user value ({name},{sex})’.format_map(user)
print(sql)
切片:是list、字符串范围取值的方法,也可以对元组进行切片。
a=[1,2,3,4,5]
a[1:3] #list下标从0开始。表示从list的下标为1的位置开始,取到下标为位置为3的元素。
a[:2] #冒号前面不写,表示从list的下标为0的位置
a[:-1] #冒号后面的-1表示取到list的最后
a[:] #冒号前后写,表示取整个list
a[::2] #第二个冒号后面的数字表示步长,表示隔多少个元素取一个
转载于: