python中列表和字典的使用

python中列表和字典的使用
列表

1.列表的创建
使用range(范围起点,范围终点,步长)

例如:list = list(range(1,20,2))

2.列表的查找
使用index(数据)方法
例如:

list1 = ['daqiu', 20, 'erqiu', 10, 'daqiu']
print(list1.index('sanqiu'))

结果:
0

注意:如果查不到,报错!     查到则返回所在下标!

3.列表的数据增加
使用insert( ),append( ),extend( )方法
      ①.insert()方法
      list1.insert (下标,数据)
      例如:
list1.insert(2, 'xiaoqiu')
      ②.append()方法
      list1.append(数据/列表)
      例如:
list1.append('sanqiu')
list1.append([100, 200, 300])
     ③.extend()方法
     list1.extend(数据/列表),将数据或列表拆开插入目标列表
     例如:
list1 = ['daqiu', 20, 'erqiu', 10]

list1.extend('sanqiu')list1.extend([10, 100, 1000])
     结果:
     ['daqiu', 20, 'erqiu', 10]      ['daqiu', 20, 'erqiu', 10, 's', 'a', 'n', 'q', 'i', 'u', 10, 100, 1000]
4.数据删除
使用remove(),del/del(),clear(),pop()方法
     ①remove()方法
         功能:删除指定数据
         例如:
list1.remove('daqiu')


 

     ②pop()方法
         功能:如果参数位置写了下标表示的是删除指定下标的数据;如果不指定下标从结尾删除                    pop()都会有一个返回值,表示的就是删除的这个数据
         例如:

list1 = ['daqiu', 20, 'erqiu', 10, 'daqiu']
num = list1.pop(1)
list1.pop()
print(list1)
print(num)

       结果:['daqiu', 'erqiu', 10]
                  20

     ③clear()方法
     功能:清空列表。

     例如:


list1.clear()

     ④del/del()方法

     功能:删除列表
     例如:

del list1del(list1)

5.数据修改
 使用index()查找,然后根据下表直接修改

 例如:
list1[0] = 'xiaoqiu'  # 直接修改
print(list1)
num = list1.index('erqiu')   #  匹配后修改
list1[num] = 'sanqiu'
print(list1)
补充:排序,拷贝,嵌套,推导式,常用技巧
1.排序
方法:sort(),sorted()
sort()默认正向,若要反向,加参数reverse=true
sorted( )是python自带函数,用法:sorted(列表名),需要赋值给另一个变量

才能使用。
例如:
newList = sorted(list1)
print(newList)
2.拷贝

分为深拷贝和浅拷贝
    ①浅拷贝:一般通过赋值进行拷贝,一改都改。

   例如:


list2 = list1print(list1)print(list2)list2.append(10)print(list2)print(list1)list1.remove(2)print(list1)print(list2)

 无论改哪个列表,两个列表都发生改变。

   ②深拷贝
   通过copy()方法进行拷贝,语法:list2 = list1.copy()
   此时无论改哪个,另一个不变。

3.列表嵌套
顾名思义,就是在一个列表中再定义列表
例如:[[1,2],[3,4],[5,6]]
用法类似于循环语句,根据下标进行数据的增删改查

# 一个学校,有3个办公室(列表),现在有8位老师(列表)等待工位的分配,请编写程序,完成随机的分配import random# random.randint(0,2)# 老师名字的列表names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']# 办公室的列表offices = [[],[],[]]# 随机分配办公室 -- 遍历整个names,如果名字在names里面,放到列表(子列表)中去(追加数据到列表)for name in names: # 随机的列表.append(name) num = random.randint(0, 2) offices[num].append(name)# print(offices[0])# 打印信息: 办公室1的人数是4, 名字1 名字2i = 1 # 办公室编号for suboffice in offices: print('办公室%d的人数是%d' % (i, len(suboffice))) i += 1 # suboffice = ['a', 'c'] for name in suboffice: print(name, end=' ') print()

4.列表推导式
作用:用一个表达式去生成 一个有规律的列表  或  控制一个有规律的列表
相当于把条件后置,显示变量放在前边进行输出。一般条件是for循环,条件逻辑是一级一级嵌套的

生成规律列表的例子:


list6 = [i for i in range(0, 21) if i % 2 == 0]

控制列表内容的例子:

list8 = [i for i in mylist if len(str(i)) >= 3]
5.列表常用技巧

①合并
list3 = list1 + list2  //通过加法进行列表合并
print(list3)
list1.extend(list2)   //通过extend()方法进行列表合并
print(list1)
list1 += list2    //通过加法进行列表合并
print(list1)
list3 = ['hello']
list4 = list3 * 4    //通过乘法进行相同数据的成倍输出
print(list4)
②字符串和列表的相互转换

字符串转换成列表:split()方法
str1 = 'hello world my python'
list5 = str1.split(' ')
列表转换成字符串:join()方法。格式:'分割符号'.join(列表)
str2 = '...'.join(list5)
print(str2)

③判断数据是否是想要类型
函数isinstance(数据, 指定的数据类型)
if isinstance(ss, int):
④enumerate()方法
enumerate() : 返回一个列表,里面包含下标和数据的对应的元组(即列表中内容是一个个元组)
                      通过变量key,value可以进行列表中元组下标以及内容的输出
list3 = ['aa', 'bb', 'cc']
for i in enumerate(list3):
    print(i)
for key, value in enumerate(list3):
    print(key)
    print(value)
此过程也叫拆包,用于取数据和控制数据!

字典

1.字典的创建
字典不支持下标以及排序功能,所以它是无序的

错误用法:


dict1 = {'name': 'python', 'age': 28}print(dict1[0])

正确用法:


print(dict1['name'])

①空字典的创建:
dict1 = {   }
dict2 = dict.()
②有内容字典的创建:
dict3 = dict(字典各项)

dict4 = dict(name='gui', age=30)

dict4 = dict([('name', 'laowang'),('weizhi', 'gebide')])//注意语法格式

③fromkeys() 方法-- 创建键值对的值都是相同的形式的列表  要求第一个参数必须是列表,用来书写键名
fromkeys([], 键值对的值)

dict5 = dict5.fromkeys(['aa', 'bb'], 10)

2.字典查找,修改,增加
dict1 = {'name': 'python', 'age': 28}
# 通过键名查找数据,如果有这个键,返回对应的值;没有这个键则报错
#通过键名查找数据 如果等号赋值的话,如果有这个键则修改值;没有这个键,则新增这个键值对
dict1['name'] = 'gui'
print(dict1)

print(dict1['id'])
dict1['id'] = 100
print(dict1)

# get():通过键名查找数据;如果有这个键则返回对应的值;没有这个键返回的默认是None
# 如果设置了第二个参数,没有这个键的时候返回第二个参数(作用:给自己一个提示信息)
# print(dict1.get('name'))
# print(dict1.get('id', 'hello'))
# print(dict1)

# setdefault():通过键名查找数据,如果有这个键则返回对应的值;没有这个键返回的默认是None# 同时 默认增加一个键值对 - 键:None;如果设置了第二个参数,新增的键值对就是:键:第二个参数
# print(dict1.setdefault('id', 'hello'))
# print(dict1)

# update()
dict2 = {'name': 'laowang', 'sex': 'man'}
dict1.update(dict2)  # 2 更新了1:既能修改又能新增
print(dict1)
print(dict2)

3.字典拷贝
浅拷贝,深拷贝,超深拷贝

①对于单个键值对应项:
   浅拷贝:通过赋值
dict2 = dict1

   深拷贝:copy()方法


dict2 = dict1.copy()


②对于一键多项,此时深拷贝结果同浅拷贝一样


dict100 = copy.deepcopy(dict10)


deepcopy()适用于多项数据的内容修改,此时能保证原数据不被修改。