day3_列表、元组、字符串、切片和字典的基本操作

一、列表的基本操作简介
列表的英文名字是list,叫列表和叫list是一个意思,列表用[]表示,如L = [],表示这是一个空列表,里面没有值,列表里面可以存放int、float、str、bool等数据类型,可以把一个类型的存放在list里,如nums = [6, 3, 24, 67, 31, 7, 10],也可以把所有类型的都放在一个list里,如names = ['parker', 123, 10.5, True],还有二维和三维,就是list里面还嵌套一个list

列表的增加操作:
以nums = [6, 3, 24, 67, 31, 7, 10]为例子
第一种方式,append,从末尾给list添加元素,nums.append(9)就是把9这个元素放到了nums这个list的最后面,这是添加int类型的数据,如果要是添加字符串类型的,要把添加的内容用""或''括起来,print(nums)就会打印出[6, 3, 24, 67, 31, 7, 10, 9],可以看到9追加到最后的位置
第二种方式,insert,指定位置添加,如果指定的下标不存在,那么在末尾添加,nums.insert(1,5),print(nums)会打印出[6, 5, 3, 24, 67, 31, 7, 10],可以看到添加的元素5插入到下标为1的位置,之前的下标为1的元素3,现在它的下标是2
第三种方式,extend,从末尾给指定的list添加元素,nums.extend(['呵呵','哈哈']),print(nums)会打印出[6, 3, 24, 67, 31, 7, 10, '呵呵', '哈哈'],extend里传入一个可迭代对象,可以是list,tuple,set,字符串,字典,就是把后面list、tuple、set里的元素加入到nums末尾,把字典的key加到nums末尾,把字符串以单个字符的形式加到nums末尾

 

列表的查询操作:
其实上面的print(nums)操作就是查询整个list,查看添加到list里面的元素是否已经添加成功都可以通过print(nums)来实现
查询单个元素可以通过print(nums[1])或print(nums[-1]) 的方式,查看下标对应的元素,下标-1代表最后一个元素

 

列表的修改操作:
直接通过赋值的方式来修改,如nums[0] = 88,在print(nums)会打印出[88, 3, 24, 67, 31, 7, 10],可以看到下标为0的6变成了88,修改成功了

 

列表的删除操作:
第一种方式是,del nums[3],然后print(nums)会打印出[6, 3, 24, 31, 7, 10],会把下标为3的元素67删掉
第二种方式,nums.pop(),删除列表里最后一个元素,然后print(nums)会打印出[6, 3, 24, 67, 31, 7],会把最后一个元素10删掉
第三种方式,nums.pop(2),删除指定下标的元素,然后print(nums)会打印出[6, 3, 67, 31, 7, 10],会把下标为2的元素24删掉
第四种方式,nums.remove(31),传入的是元素,不是下标,然后print(nums)会打印出[6, 3, 24, 67, 7, 10],list里面的元素31被删掉了
第五种方式,nums.clear(),清空列表里的所有元素,返回一个空列表,然后print(nums)会打印出[],list里面的所有元素都被删掉了

 

列表的排序操作:
通过sort()方式,但只是适用于int和float类型,如nums.sort(),然后print(nums)会打印出[3, 6, 7, 10, 24, 31, 67],默认是按升序排列

 

列表的翻转操作:
1、通过reverse()方式,翻转list中元素的位置,如果上面的排序要实现降序排列,可以通过nums.sort(reverse=True)实现,print(nums)打印出[67, 31, 24, 10, 7, 6, 3]
2、通过reversed()方式,tu = [1, 34, 67, 888, -777, 13],先tu.sort(),然后print(list(reversed(tu)))实现了list元素的翻转,也适用于元组

 

列表的拼接操作:
通过'+'连接两个list,实现list的拼接,如names + nums ,拼接后的列表是一个新的list,两个list(names、nums)仍然是分开的
list1 = [123, 456]
list2 = [45, 555]
print(list1 > list2)打印出True,比较第一个元素大小,第一个一样再比较后面的,以此类推

 

列表的下标操作:
data = [123, '锤子', 'hello', 123, 'park', 'many', 123]
print(data.index('hello'))  # 打印位置2
print(data.index(123, 4, 9))  # begin是4,end是9,在这个范围内123的下标,如果这个值不存在,会报错

 

不要循环删list,会导致下标错乱,代码如下:

lis = [1, 1, 2, 3, 4, 5, 6]
for i in lis:
if i % 2 != 0:
lis.remove(i)
print(lis)
lis = [1, 1, 2, 3, 4, 5, 6]
lis3 = lis
for i in lis3:
if i % 2 != 0:
lis.remove(i)
print(lis)

 

以下的情况没有问题:

lis = [1, 1, 2, 3, 4, 5, 6]
lis2 = [1, 1, 2, 3, 4, 5, 6]
for i in lis2:
if i % 2 != 0:
lis.remove(i)
print(lis)

 

二、元组的基本操作简介
元组的英文名字是tuple,叫元组和叫tuple是一个意思,元组用()表示,如L = (),表示这是一个空元组,里面没有值,元组里面也可以存放int、float、str、bool等数据类型,可以把一个类型的存放在tuple里,如nums = (6, 3, 24, 67, 31, 7, 10),也可以把所有类型的都放在一个tuple里,如names = ('parker', 123, 10.5, True),元组是不可变变量,一旦定义了一个元组,就不能修改里面的值,元组没有增删改查操作,只有两个方法,一个是count(),另一个是index()
print(8 * (8,))打印出(8, 8, 8, 8, 8, 8, 8, 8)
tu = ('hello',)
tu2 = 7, 8, 9
print(type(tu))  # 要是没有,就是字符串类型
print(type(tu2))  # 元组类型,逗号是关键
print(nums.count())的作用是统计元组中元素出现的次数
print(nums.index())的作用是返回元组中元素的下标,如果有重复的,只打印第一个
tu = (1, 34, 67, 888, -777, 13)
print(sum(tu))  # 显示226
print(sum(tu, 74))  # 显示300
元组的删除操作:
del tu
print(tu)  # 删除后报NameError: name 'tu' is not defined

 

# 不用max方法求最大的数
def max_fun():
tuple1 = (23, 15, 1, 27, -98, 77, 10, 101)
max_element = tuple1[0] # 默认最大的元素是第0个
for element in tuple1:
if element > max_element:
max_element = element
return max_element


res = max_fun()
print(res)

 

三、字符串的基本操作简介
字符串就是用""或''括起来的表现形式,如'',这是一个空字符串,'abc'、'1234'、'Test'等这些都是字符串,字符串也是不可变变量,一旦定义了一个字符串,就不能修改里面的值,字符串也没有增删改查操作,字符串的方法很多,这里主要介绍一些常用的和重要的方法
startswith() ,它的作用是判断以什么开头,返回True或False,这里定义一个字符串,str1 = 'abc',print(str1.startswith('a'))会打印出True,如果不是以指定字符开头返回False
endswith() ,它的作用是判断以什么结尾,返回True或False,这里定义一个字符串,str2 = 'abc',print(str2.endswith('c'))会打印出True,如果不是以指定字符结尾返回False
format() ,它的作用是格式化(参数比较多用format),格式化的内容用{}括起来,如sql = 'insert into user values({id},{name},{sex},{addr})'
sql2 = sql.format(addr='北京', id=1234, sex='男', name='hello'),print(sql2)会打印出insert into user values(1234,hello,男,北京)

print('生成的sql语句是{sql},再来个{sql}'.format(sql=new_sql)),前面有两个一样的{sql},format里面只写一个就可以,format里面的sql和前面的加粗的sql保持一致,叫成别的名字也行,只要能对应上就行

format还可以使用关键字参数,但是要放到format最后,否则会报错,如print("{index},{0}".format("再见", index="你好"))

# 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
res = '{0}{1:.2f}'.format('Pi = ', 3.1415)  # {1:.2f}表示数字保留2位小数,下标从0开始,数字位置随意,如print("{1},{0}".format("你好", "再见")),打印再见,你好

print(res)


d = {'name': 'ssj', 'age': 22}
name = '小花'
word_before = 'name is %s' % name
print(word_before)
print('{name},{age}'.format_map(d)),format_map传入的是一个字典,没有format好用
''.join(),它的作用是拼接字符串,如res = ('*'.join(['hello', 'world', '123'])),用*连接list里的各元素,join里传入的可以是list,也可以是tuple,还可以是set,list、tuple以及set里的元素必须是字符串类型,用特殊符号、字母、数字或字符串都可以连接,然后print(res)打印出来一个字符串

lstrip() ,它的作用是去掉字符串左边的空格和换行,如print(' \n aaa'.lstrip())打印出aaa
rstrip(),它的作用是去掉字符串右边的空格和换行,如print('mysql \n'.rstrip())打印出mysql
strip(),它的作用是去掉字符串两边的空格和换行,如print('\n bbb \n'.strip())打印出bbb,()里也可以去掉指定的字符串,如name = 'sun,abs',print(name.strip('s'))会打印出un,ab,如name = 'un,abs',print(name.strip('s'))会打印出un,ab
replace(),它的作用是替换字符串,把前面的换成后面的,如print('mysql is db.'.replace('mysql', 'oracle'))会打印出oracle is db.
split(),它的作用是分割字符串,返回一个list,如print('1+2+3+4'.split('+'))会打印出['1', '2', '3', '4'],默认以空格分隔,几个空格都行,如果分隔时,输入的分隔符不存在,也不会报错
splitlines(),它的作用是按照换行符分割,返回一个list,如print('1+2+3\n1+2+3+4'.splitlines())会打印出['1+2+3', '1+2+3+4']
zfill(),补0,括号里指定长度,如print('123'.zfill(10)),打印出0000000123,长度为10,在前面补0
isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False,print('#12w@'.isalnum())会打印出False,如果只包含数字和字母,或者只包含数字或字母返回True
isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False,print('hello'.isalpha())会打印出True
isdigit(),如果 string 只包含数字则返回 True,否则返回 False,
print('0330'.isdigit())会打印出True
isspace(),如果 string 中只包含空格,则返回 True,否则返回 False,
print(' '.isspace())会打印出True

四、切片的基本操作简介
切片的英文名是slice,就是对list一个范围的取值,可以对列表、元组和字符串进行切片操作,列表切片后仍然是一个列表,元组切片后仍然是一个元组,字符串切片后仍然是一个字符串,member[1:3]表示取出下标值是1和2的元素,顾头不顾尾,如果member[:3]表示取出下标值是0,1,2的元素,如果member[1:]表示取出下标值从1到最后的元素,还有一种是member[:]表示是对原列表的copy,member[:10:2]表示取出从下标0-9的元素,2代表步长,就是每间隔一个取一个元素,实际上应该取出下标是0,2,4,6,8的元素,member[::-1]会从后取元素,然后打印出来,L[-2:-1]代表下标是倒数第二个的值

 

五、字典的基本操作简介
字典的英文名是dict,字典的表现形式是{},这表示空字典,也可以user_info = {'name': '哈哈', 'age': '22'},字典相比list取值更快,只要print(user_info['name'])就可以把哈哈打印出来,字典是通过key-value存取的,只要找到key,就可以找到对应的value,字典有增删改查操作,下面依次介绍

字典的增加操作:
第一种方式:可以通过user_info['addr']='北京'
第二种方式:user_info.setdefault('sex', '男')  # 如果key已存在,不做修改,还是保留原值
第三种方式:dict1.update(dict2)  # 把dict2里的key和value放到dict1里,如下:
dict1 = {'name': 'tim', 'age': 22}
dict2 = {'sex': 'female'}
dict1.update(dict2)
print(dict1) 打印出{'age': 22, 'name': '哈哈', 'sex': 'female'}

字典的查询操作:
第一种方式,print(user_info['name']),如果name不存在的话会报错,如果存在会打印出对应的value
第二种方式,print(user_info.get('name')),如果name不存在会返回None,存在则打印出对应的value,print(user_info.get('addr', '北京')),get可以加一个默认值,也可以不加,如果key不存在,打印的是默认值,如果key存在,打印真实的value
print(user_info.keys())  # 打印所有的keys,如dict_keys(['name', 'age']),转换成list,可用print(list(users.keys()))
print(user_info.values())  # 打印所有的values,如dict_values(['哈哈', '22']),转换成list,可用print(list(users.values()))
print(user_info.items())  # 打印出dict_items([('name', '哈哈'), ('age', '22')])

 

字典的删除操作:
第一种方式,del user_info['name'],可以删除字典里的name和它对应的value
第二种方式,user_info.pop('age'),这里要传入一个key,然会后删除字典里的name和它对应的value
第三种方式,user_info.popitem(),返回并删除字典中的最后一对key和value
第四种方式,user_info.clear(),全部删除,返回一个空字典

 

字典的修改操作:
第一种方式,user_info['name'] = 'hello',直接赋值
第二种方式,user_info.update(name = '孙树江'),如果没有该key就是新增一个键值对

user_info = {'name': '哈哈', 'age': '22'}
for k in user_info: # 这种循环方式效率高
value = user_info.get(k)
print(k, value)

for k, v in user_info.items(): # 这种循环方式效率不高,通过.items()方法先将字典转成一个list,再循环
print(k, v)

 

dict1 = dict((('a', 97), ('b', 98), ('c', 99)))  # 第二层括号可以换成[ ]
print(dict1)  # 打印出{'b': 98, 'c': 99, 'a': 97}
dict2 = dict(小甲鱼='让编程改变世界', 谭浩强='让C语言改变历史')
print(dict2)  # 打印出{'谭浩强': '让C语言改变历史', '小甲鱼': '让编程改变世界'}
dict3 = {}
print(dict3.fromkeys((1, 2, 3)))  # 如果只传一个,value默认是None,打印出{1: None, 2: None, 3: None}
dict4 = {}
print(dict4.fromkeys((1, 2, 3), '哈哈'))  # 打印出{1: '哈哈', 2: '哈哈', 3: '哈哈'}
dict5 = {}
print(dict5.fromkeys((1, 2, 3), ('one', 'two', 'three')))  # 打印出{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')},第二个整体作为一个value

# 字符串通过split方式转成字典
my_dict = {}
data = '1000,小花,女'
[my_dict['id'], my_dict['name'], my_dict['sex']] = data.split(',')  # 方法1
# (my_dict['id'], my_dict['name'], my_dict['sex']) = data.split(',')  # 方法2
# my_dict['id'], my_dict['name'], my_dict['sex'] = data.split(',')  # 方法3
print('ID=>', my_dict['id'])
print('Name=>', my_dict['name'])
print('Sex=>', my_dict['sex'])
print(my_dict)  # 打印出字典

综上,上面介绍的方法都是比较常用的和实用的方法,要学会活学活用,多动手练习

原文地址:https://www.cnblogs.com/laosun0204/p/7635421.html