返回
软件
分类

列表用于组织其它数值,也可以包含列表

日期: 2020-01-02 08:17 浏览次数 : 179

列表的使用,列表使用

  跟老师学的,实验试着写的 

import copy
names=["CSCF","MGCF","HSS1","HSS2","HBSBC01","EMA"]
'''
print(names)
print(names[0],names[2])
print(names[1:2])
print(names[1:3])# 取到3不包括3起始位置包括结束位置不包括,又称作顾头不顾尾
print(names[-1])#取最后一个
print(names[-2])#取倒数第二个
print(names[-3:-1])#开始位置是从左到右
print(names[-2:])#从-2取到尾
print(names[0:3])#从头取到3不包括3
print(names[:3])#从头取到3不包括3

names.append("EDB")#在末尾追加“EDB”
names.insert(1,"这些")#插入到1 的前面
names.insert(3,"hbsbc01")#插入到HSS1的前面
names[3]="P-CSCF"#把hbsbc01换成P-CSCF
print(names)
'''
#删除
'''
names.remove("这些")#删除指定内容
del names[2]#删除指定下标内容
names.pop()#默认没有下标就是删除最后一个
print(names)
'''
#查找
'''print(names.index("MGCF"))#找MGCF的位置下标
print(names[names.index("MGCF")])#这有啥用、我也不知道反正大家都这么玩
#重名统计:
names.insert(1,"这些")
names.insert(1,"这些")
names.insert(1,"这些")
print(names)
print(names.count("这些"))#统计这个数组中“这些”有几个
names.reverse()#整个数组反转
#names.clear()#清空整个数组
names.sort()#排序按照ascii码排序
print(names)
'''
#扩展
'''
names2=[1,2,3,4,5]
names.extend(names2)#扩展names2到names结尾
print(names)
del names2#删掉整个names2
print(names.names2)
'''
#复制
'''
names3=names.copy()
names[3]="may"
#names=["mgcf",["a","b"]]
#names[1][0]="mgcf1"
print(names)
print(names3)
'''
names=["CSCF",["MGCF1","MGCF1"],"HSS1","HSS2","HBSBC01","EMA"]
names[1][1]="MGCF2"
names3=copy.copy(names)#这样也是浅copy 约等于copy
names3=copy.deepcopy(names)#深copy 这样的结果是两个独立的数据

names[2]="hss01"
names[3]="hss02"
print(names)
#names3=copy.copy(names)

print(names)
print(names3)
print(names[0:-1:2])#步长2打印
print(names[::2])#步长2打印又一种写法
print(names[:])#打印全部但一般没人这么写
for i  in names:  #逐个打印
    print(i)

跟老师学的,实验试着写的 import copy names=["CSCF","MGCF","HSS1","HSS2","HBSBC01","EMA"] ''' print(names) print(names[0],names[2]) print(...

列表用于组织其它数值,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是相同的类型。

list使用方法很简单:

必赢备用网址 , 

一般的表现形式是用 [ ] 括起来,可以包含多种数据类型,也可以包含列表

列表的定义

name = [1,2,['hello','lijames']]

1 student = ['Tom', 'Jack', 'Avril']

name1 = []  这样就是定义一个空列表

 

因为列表是动态的所以列表是可以自由删减list的长度和元素的;

添加元素

name = ['ljames','huihui','feng','ru']

  • 将另一个列表直接赋值给该列表
  • 使用"[头下标:尾下标]"j将另一个列表的指定元素值拷贝至该列表
  • 使用"+"连接符,将元素添加至列表末尾
  • 使用" * "乘号得到多个相同元素
  • 使用append方法,将元素添加至列表末尾
  • 使用extend方法,将元素添加至列表末尾
  • 使用insert方法,将元素插入至指定位置

name1 = [1,2,3,4,5,6]

 

name.insert(1,"ru")    #首先插入一个相同的数据

 1 student = ['Tom', 'Jack', 'Avril']
 2 student *= 3
 3 print(student)  #['Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril']
 4 
 5 
 6 # student中变量为name值的复制
 7 name = ['Jerry', 'Lucy']
 8 student = name[:]
 9 print(student)  # ['Jerry', 'Lucy']
10 name.clear()
11 print(student)  # ['Jerry', 'Lucy']
12 
13 
14 # *得到的每一相同项指向同一内存地址
15 name = ['Jerry']*3
16 print(name)  # ['Jerry', 'Jerry', 'Jerry']
17 print(id(name[0]))  # 54580088
18 print(id(name[1]))  # 54580088
19 print(id(name[2]))  # 54580088
20 
21 
22 # name2与name1指向同一内存地址
23 name1 = ['Jerry']
24 name2 = name1
25 print(name2)  # ['Jerry']
26 name1.clear()
27 print(name2)  # []
28 
29 # student中变量为name值的复制,与name不指向同一内存地址
30 name = ['Jerry']
31 student = name*3
32 print(student)  # ['Jerry', 'Jerry', 'Jerry']
33 name.clear()
34 print(student)  # ['Jerry', 'Jerry', 'Jerry']
35 
36 
37 # append添加后,student中的['Jerry']与name变量指向同一内存地址
38 student = ['Tom', 'Jack', 'Avril']
39 name = ['Jerry']
40 student.append(name)
41 print(student)  # ['Tom', 'Jack', 'Avril', ['Jerry']]
42 name.clear()
43 print(student)  # ['Tom', 'Jack', 'Avril', []]
44 
45 
46 # 与name变量不指向同一内存地址
47 student = ['Tom', 'Jack', 'Avril']
48 name = 'Jerry'
49 student.append(name)
50 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']
51 del name
52 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']
53 
54 
55 # 同上,insert插入后,student中的['Jerry']与name变量指向同一内存地址
56 student = ['Tom', 'Jack', 'Avril']
57 name = ['Jerry']
58 student.insert(1, name)
59 print(student)  # ['Tom', ['Jerry'], 'Jack', 'Avril']
60 name.clear()
61 print(student)   # ['Tom', [], 'Jack', 'Avril']
62 
63 
64 # 与name变量不指向同一内存地址
65 student = ['Tom', 'Jack', 'Avril']
66 name = 'Jerry'
67 student.insert(1, name)
68 print(student)  # ['Tom', 'Jerry', 'Jack', 'Avril']
69 del name
70 print(student)  # ['Tom', 'Jerry', 'Jack', 'Avril']
71 
72 
73 # extend添加后,student中的['Jerry']为name值的复制
74 student = ['Tom', 'Jack', 'Avril']
75 name = ['Jerry']
76 student.extend(name)
77 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']
78 name.clear()
79 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']
80 
81 
82 student = ['Tom', 'Jack', 'Avril']
83 name = 'Jerry'
84 student.extend(name)
85 print(student)  # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
86 del name
87 print(student)  # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']

print(name.count("ru"))   #检查有多少个相同的数据

 

name.clear()    #清空list

  

name.reverse()    #翻转list

删除元素

name.sort()     #排序,优先级 特殊符号>数字>大写>小写

  • 使用remove方法删除指定值的元素
  • 使用pop方法弹出栈顶元素,返回弹出元素
  • 使用del关键字删除指定位置元素
  • 使用clear方法清空列表元素,等于del a[:]

    1 # 删除指定值的元素 2 student = ['Tom', 'Jack', 'Avril'] 3 student.remove('Tom') 4 print(student) 5 6 # 弹出栈顶元素 7 student = ['Tom', 'Jack', 'Avril'] 8 s = student.pop() 9 print(s) 10 print(student) 11 12 # 删除指定位置元素 13 student = ['Tom', 'Jack', 'Avril'] 14 del student[1] 15 print(student)

name.extend(name1)    #把两个list扩展在一起

 

print(name[0])        #从 list中打印下标是0的数据

 其他操作:

print(name.index('ru'))     #定位某个数据在list中的位置

list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误
list.count(x) 返回 x 在列表中出现的次数
list.sort() 对列表中的元素进行排序。参数reverse默认为False,从小到大排序,设置为True则为从大到小排序
list.reverse() 倒排列表中的元素
list.copy() 返回列表的浅复制(变量值的复制),等于list[:]

print(name[name.index('ru')])   #打印在”ru“这个数据

 

 print(name[1:3])     #  切片,打印下标1到2的数据

列表推导式

print(name[-1]) #  切片  从右往左第一个,-2效果同样

 

print(name[1],name[3])

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

print(name[0:])  #相当于print (name[0:3])

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

for sin range (1,10 ,3):#隔一个打印一个

 

    print(s)

列表用于组织其它数值,也可以包含列表。将列表中每个数值乘三,获得一个新的列表:

print(name3 [::2])#步长切片,表示序号0:表示序号最后一个:表示步长

>>> num = [1, 2, 3]
>>> [3*n for n in num]
[3, 6, 9]

 name.append('hhh')    #追加,一般是在列表的最后添加

 

 name.insert(1,'jjj')       #指定位置追加

可以用 if 子句作为过滤器:

name[2] = 'xialei'    #改动内容,直接把要改的重新赋值

>>> num = [1, 2, 3]
>>> [3*n for n in num if n > 2]
[9]
>>> [3*n for n in numif n < 3]
[3,6]

delete的三种方法

 

name.pop(0)       #快速查看语法的使用方法,command单击两次

其他用法:

del name[2]

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]

>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

name.remove('ru')

 

name2 = name.copy()#复制第一层的name,浅复制

用列表推导式实现矩阵转置:

print(name,name2)

 1 # 矩阵转置
 2 matrix = [
 3     [1, 2, 3],
 4     [4, 5, 6],
 5     [7, 8, 9],
 6     [10, 11, 12]
 7 ]
 8 
 9 # 方法一
10 newMatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
11 print(newMatrix)
12 
13 # 方法二
14 newMatrix = []
15 for i in range(len(matrix[0])):
16     newMatrix.append([row[i] for row in matrix])
17 print(newMatrix)
18 
19 # 方法三
20 newMatrix = []
21 for i in range(len(matrix[0])):
22     newRow = []
23     for oldRow in matrix:
24         newRow.append(oldRow[i])
25     newMatrix.append(newRow)
26 print(newMatrix)

name[1] ='你好'

 

print(name,name2)

解释一下浅copy  区分一下第一层list与第二层list的区别

name3 = [1,2,3,4,['nihao','hh',],'zhidao']

name4 = name3.copy()

name3 [4][0] ='你好'

name3 [1] ='m'

print(name3,name4)

for iin name3:#for 循环

    print(i)