列表

 

 

http://www.runoob.com/python3/python3-list.html

列表的数据项不需要具有相同的类型

列表的创建

1.用[]

lq=["李明","张三","李四","王五"]

2.列表名=list(容器)

str1=["我爱我的祖国"]

lb=list(str1)  #创建列表
lb1=list("我爱我的祖国")
print(lb)
print(lb1)

 

返回指定元素 

dq=["台湾","陕西","浙江","广西","香港","上海"]
a=dq[1]  #返回指定元素
print(a)

b=dq[-2:]  #返回指定元素的列表
print(b)

 

修改

dq=["台湾","陕西","浙江"]
dq[1]="天津"    #修改元素
print(dq)

dq[1:]=["北京","上海"]   #修改元素
#右侧是容器
print(dq)

 

dq=["台湾","陕西","浙江"]
i=len(dq)   #把列表统一设为某值
dq[:]=[0]*i   
print(dq)

  

 

s.append(s1)   在末尾追加列表

s=[1,2,3,2,5,6,2,4,9,0,2,4]
s1=["a","b","c","d"]
s.append(s1)
print(s)

 

结果:

追加的列表整体作为一项

 

s=[1,2,3,2,5,6,2,4,9,0,2,4]
s.append(100)
print(s)

 

 

s.extend(s1)在末尾追加另一个列表的元素   与 += 相同

s=[1,2,3,2,5,6,2,4,9,0,2,4]
s1=["a","b","c","d"]
s.extend(s1)
print(s)

 

结果:

插入

motorcycles.insert(1, 'ducati')    在指定位置插入元素

索引号    就是插入的位置

 

s.insert(1,s1);   在指定位置插入列表

s=[1,2,3,2,5,6,2,4,9,0,2,4];

s1=['a','b','c','d']

s.insert(1,s1);

print(s);

结果

seq1=seq*4   把列表seq的内容重复n边再赋值给seq1

 

元素是否在列表中

3 in [1, 2, 3]   3是否在列表中   返回值类型bool  ture

 

删除

del motorcycles[1]    删除指定元素

参数   索引号

del 列表名   删除整个列表

 

del s[2:5]  删除指定范围的元素

popped = motorcycles.pop()  删除最后一个元素并返回其内容

从motorcycles列表中删除最后一个元素,并把删除元素的内容返回给popped

与popped = motorcycles.pop(-1)  相同

popped = motorcycles.pop(1)   删除指定元素,并返回其内容

从motorcycles列表中删除指定元素,并把删除元素的内容返回给popped

 

motorcycles.remove('yamaha')     删除指定值的元素

注意 方法remove() 只删除第一个指定的值

如果要移除的元素不在列表中,remove方法将引发ValueError异常。因此,在使用remove方法之前,我们需要确保要移除的元素存在

 

清空列表

s.clear()   

复制列表 

list2 = list1.copy()    复制列表

copy是浅拷贝 

=   相当于 传址   两个变量指向同一个列表

lb=[1,2,3,4,5]
lb1=lb
print(lb1)

lb[1]=20
print(lb1)
"""
=是传址,即lb和lb1指向同一个数据地址,修改其中一个列表的数据,相当于修改另一个列表的数据

"""

 

list_name =["李琪",["周义杰","毛绍祺"]]
data01= list_name.copy()  #浅拷贝,只复制第一层
data01[0]="琪琪"
data01[1][0]="义杰"


print(list_name)
print(data01)

  

 

 

排列 

cars.sort()   列表元素按升续排列

cars.sort(reverse=True)      列表元素按降续排列

l.sort(key=abs)   列表元素按降续排列,按照指定函数进行计算后的返回值进行排序

排序后的每个元素是原元素

 

cars1=sorted(cars)    列表元素按升续排列

cars列表元素的顺序没有改变

cars1保存改变顺序之后的列表

反转元素顺序 

lb=["a","b","c","d"]
lb.reverse()  #反转元素顺序
print(lb)

 

 

 

lb=["a","b","c","d"]
lb1=lb[::-1]  #反转元素顺序 
print(lb1)

 

    

返回列表元素的总个数

dq=["台湾","陕西","浙江"]
i=len(dq)   #返回列表元素的总个数
print(i)

 

返回某元素出现的次数 

s1=s.count('sd')   返回某元素出现的次数

寻找某元素的索引

s1=s.index('sd')   寻找某元素的索引

没找到抛出错误

只找一个

 

s1=s.index('sd',1,4)  在指定范围内寻找某元素的索引

range(1,5)    包含1、2、3、4的集合

注意不包含5

range(5)   0到5

序列拆包 

tuple01 =["李琪","周义杰","毛绍祺"]
a,b,c=tuple01  #拆包
#注意:前面的变量数必须等于元素个数
print(a)
print(b)
print(c)

 

 

 

list(seq)    将元组转换为列表

sss=set(li)    将列表转换为集合

 

squares = [value**2 for value in range(1,11)]

 

列表推导式 

作用:根据其它容器,以简易方式构建新列表

 

格式1:

[新列表元素值表达式 for 变量 in 容器]

 

TestList = [x*2 for x in range(10)]   #创建 数值*2 的列表

print(TestList)

等价于以下语句:

newList = []
for x in range(10):
    newList.append(x*2)

print(newList)

 

 

格式2: 

新列表元素值表达式 for 变量 in 容器 if 条件 

TestList = [i for i in range(10) if i % 2 == 0]  #创建 全是偶数 的列表

print(TestList)

 等价于以下语句:

TestList = []
for i in range(10):
    if i % 2 == 0:
        TestList.append(i)

print(TestList)

 

格式3:双层列表无条件

OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

TestList = [j for i in OldList for j in i]

print(TestList)

 等价于以下语句:

OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
TestList = []

for i in OldList:
    for j in i:
        TestList.append(j)

print(TestList)

 

格式4:双层列表带条件 

OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

TestList = [j for i in OldList for j in i if j % 2 == 0]

print(TestList)

 

参考:https://blog.csdn.net/qq_42659468/article/details/132427538   

 

 

练习 

import random
"""
彩票:双色球
红色:6个1--33之间的整数不能重复
蓝色:1个1--16之间的整数
随机产生一注彩票(列表(前六个是红色,最后一个蓝色))
"""
list01=[]

while True:
    i=random.randint(1,33)
    if i not in list01:
        list01.append(i)
    if len(list01) == 6:
        break
i=random.randint(1,16)
list01.append(i)

print(list01)

 

"""
有难度哦
自定义排序算法
升序:从小到大
"""

list01=[5,3,4,7,4,7,8,9,10,20]
for i in range(len(list01)-1):

    for j in range(i+1,len(list01)):
        if list01[i]>list01[j]:      
            list01[i],list01[j]=list01[j],list01[i]

print(list01)

 

 

 

 

 

 

 

 

posted @ 2019-03-08 11:29  天子骄龙  阅读(174)  评论(0编辑  收藏  举报