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 list1 del(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 名字 2 i = 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()适用于多项数据的内容修改,此时能保证原数据不被修改。


猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/79844571