Python 基础四 列表

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

1、列表的索引

# 列表的索引
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
l1 = list[0] #索引为0的值
l2 = list[4] #索引为4的值
l3 = list[0:3] 
print(l1,l2,l3)

2、列表的增

列表的增加,无返回值

2.1 append   将内容添加到最后

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
s=list.append('江海') #增加到最后
s=list.append([2,'hello',8])   #增加到最后
print(list)

#在列表中添加人名,直到输入Q才结束
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao'] while 1: username = input('请输入名字:') if username.strip().upper() == 'Q': break else: list.append(username) print(list)

 

2.2 insert    根据索引去增加

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
l1=list.insert(1,'女神') #索引值为1的地方 插入‘女神’
print(list)

2.3 extend   迭代的增加

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
l1 = list.extend('小可爱')   #添加内容为‘小’,‘可’,‘爱’
l2 = list.extend([123,'asd'])  #添加内容为‘123’,‘asd’
print(list)

3、列表的删

列表的删除,有返回值,返回值为被删除的内容

3.1 pop  

pop中无内容表示默认删除最后一个。

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
l1=list.pop(1)  # 删除list中索引为1的值
print(list)    #打印删除后的列表
print(l1)    #打印被删除的值

3.2 remove

按列表中的元素删除,且无返回值

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']

l2 = list.remove('ogen')   #指定哪个删哪个
print(list)

3.3 clear 清空列表

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']

l=list.clear()
print(list)

3.4 del 删除列表

 3.4.1 删除整个列表时会报错

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
# del list      # 删除整个列表
# del list[0]    #删除列表中的某个元素,根据索引
del list[3:]   #切片删除 索引3以后的元素
print(list)

4、列表中的改

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
# list[0]='大王'  #改单个内容
# list[0]=['二货','小可爱']  #改成列表
# list[0:2]='lulala'  #改成单个的元素
list[0:2]=['','','','']  #改成列表
print(list)

5、列表中的查

按索引查
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
for i in list:   
    print(i)

按切片查:
list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']
print(list[2:5])

6、公共方法:len、count、index

list = ['alex',[1,2,3],'太白','ogen',1,2,'biao']

l1=len(list)
l2=list.count('太白')
l3=list.index('太白')
print(l1,l2,l3)

7、排序 sort

# 正向排序
s=[1,4,5,2,7,3,8,10,6]
s.sort()
 print(s)

# 反向排序
s=[1,4,5,2,7,3,8,10,6]
s.sort(reverse=True)
print(s)

#列表的翻转
s=[1,4,5,2,7,3,8,10,6]
s.reverse()
print(s)

8、列表的嵌套

# 找到list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao'] 中的白
list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao']
l1=list[2][1]
print(l1)


# 将t改为T,并放回列表中
list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao']
list[0]=list[0].capitalize()
print(list)


# 将太白金星改为太白啦
list = ['taivai',[1,'alex',3],'太白金星','ogen',1,2,'biao']
# 方法一:
list[2]='太白啦'
print(list)
# 方法二:
l1=list[2].replace('金星','')
print(list)

9、元祖

元祖为只读列表,可循环查询,可切片。
儿子不能改,孙子可能可以改。
tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
# print(tu[3])
# print(tu[0:4])
# for i in tu:
#     print(i)
tu[4][3]=tu[4][3].upper()  #将taibai变大写
# print(tu)
tu[4].append('sb')   #在元祖的列表中添加一个字符串
print(tu)

10、join

 将列表转换成字符串用join,将字符串转换为列表使用split


#以-作为连接,s必须是可迭代对象
s='amyleel'
s1='_'.join(s)
print(s1)


tu = ('1','2','3','alex','egon')
t1 = '+'.join(tu)
print(t1)

11、range

相当于字存放数字的列表(顾头不顾腚)

可加步长
for i in range(3,10):
    print(i)
for i in range(10):
    print(i)
for i in range(0,10,3):
    print(i)
for i in range(10,0,-2):
    print(i)
for i in range(10,-1,-2):
    print(i)

 

 练习题:

# 写代码,有如下列表,按照要求实现每一个功能
# li = [‘alex’,’wusir’,’eric’,’rain’,‘alex’]
# 1)计算列表的长度并输出
'''
li = ['alex','wusir','eric','rain','alex']
l1=len(li)
print(l1)


# 2)列表中追加元素’seven’,并输出添加后的列表
li = ['alex','wusir','eric','rain','alex']
li.append('seven')
print(li)


# 3)请在列表的第1个位置插入元素’Tony’,并输出添加后的列表
li = ['alex','wusir','eric','rain','alex']
li.insert(0,'Tony')
print(li)


# 4)请修改列表第2个位置的元素为’Kelly’,并输出修改后的列表
li = ['alex','wusir','eric','rain','alex']
# li[1]='Kelly'
li[1]=li[1].replace('wusir','Kelly')
print(li)




# 5)请将列表l2=[1,’a’,3,4,’heart’]的每一个元素添加到列表li中,
# 一行代码实现,不允许循环添加。
li = ['alex','wusir','eric','rain','alex']
l2=[1,'a',3,4,'heart']
li.append(l2)
print(li)


# 6)请将字符串s = ‘qwert’的每一个元素添加到列表li中,一行代码实现,
# 不允许循环添加。
li = ['alex','wusir','eric','rain','alex']
s = 'qwert'
li.extend(s)
print(li)


# 7)请删除列表中的元素’eric’,并输出添加后的列表
li = ['alex','wusir','eric','rain','alex']
li.remove('eric')
print(li)


# 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
li = ['alex','wusir','eric','rain','alex']
li.pop(2)
print(li)


# 9)请删除列表中的第2至4个元素,并输出删除元素后的列表
li = ['alex','wusir','eric','rain','alex']
del li[2:]
print(li)


# 10)请将列表所有得元素反转,并输出反转后的列表
li = ['alex','wusir','eric','rain','alex']
li.reverse()
print(li)



# 11)请计算出‘alex’元素在列表li中出现的次数,并输出该次数。
li = ['alex','wusir','eric','rain','alex']
l1=li.count('alex')
print(l1)


# 2,写代码,有如下列表,利用切片实现每一个功能
# li = [1,3,2,’a’,4,’b’,5,’c’]
# 1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
li = [1,3,2,'a',4,'b',5,'c']
# l1=li[0:3]
# print(l1)
# 或者
del li[3:]
print(li)


# 2)通过对li列表的切片形成新的列表l2,l2 = [’a’,4,’b’]
li = [1,3,2,'a',4,'b',5,'c']
l1 = li[3:6]
print(l1)


# 3)通过对li列表的切片形成新的列表l3,l3 = [’1,2,4,5]
li = [1,3,2,'a',4,'b',5,'c']
l2 = li[0::2]
print(l2)


# 4)通过对li列表的切片形成新的列表l4,l4 = [3,’a’,’b’]
li = [1,3,2,'a',4,'b',5,'c']
l1 = li[1:-1:2]
print(l1)


# 5)通过对li列表的切片形成新的列表l5,l5 = [‘c’]
li = [1,3,2,'a',4,'b',5,'c']
l=li[-1]
print(l)



# 6)通过对li列表的切片形成新的列表l6,l6 = [‘b’,’a’,3]
li = [1,3,2,'a',4,'b',5,'c']
l=li[5::-2]
print(l)


# 3,写代码,有如下列表,按照要求实现每一个功能。
# lis = [2,3,‘k’,[‘qwe’,20,[‘k1’,[‘tt’,3,’1’]],89],’ab’,’adv’]
# 1)将列表lis中的’tt’变成大写(用两种方式)。
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)

lis[3][2][1][0]='TT'
lis[3][2][1][0]=lis[3][2][1][0].replace('tt','TT')
print(lis)


# 2)将列表中的数字3变成字符串’100’(用两种方式)。
# 方法一:
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[1]=lis[3][2][1][2]='100'
print(lis)
# 方法二:
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[1]=str(lis[1]+97)
lis[3][2][1][1]=str(lis[3][2][1][1]+97)
print(lis)



# 3)将列表中的字符串’1’变成数字101(用两种方式)。
# 方法一:
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][2]=int(lis[3][2][1][2])+100
print(lis)
# 方法二:
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][2]=101
print(lis)
# 方法三:
lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][2]=int(lis[3][2][1][2].replace('1','101'))
print(lis)



# 请用代码实现:
# li = [‘alex’, ’eric’, ’rain]
# 利用下划线将列表的每一个元素拼接成字符串
# "alex_eric_rain"
li = ['alex', 'eric', 'rain']
l='_'.join(li)
print(l)




# 5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,
# 并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。
# li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’  aqc’]
li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
list=[]
for i in li:
    i=i.strip()
    if i.lower().startswith('a') and i.endswith('c'):
        list.append(i)
print(list)



# 有如下列表li = [1,3,4’,alex’,[3,7,8,’taibai’],5,’ritian’]
# 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
# 我想要的结果是(用三种方法实现):
# # 方法一:
li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian']
for i in range(len(li)):
    if type(li[i])==list:
        for j in li[i]:
            print(j)
    else:
        print(li[i])
#
# # 方法二:
# li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian']
for i in li:
    if type(i)==list:
        for j in i:
            print(j)
    else:
        print(i)


# 6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
# 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]
# 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中
li = ["苍老师","东京热","武藤兰","波多野结衣"]
new_li=[]
info = input("请输入内容:").strip()
for i in li:
    if info.find(i)!=-1:
        l=len(i)
        info = info.replace(i,l*'*')
new_li.append(info)
print(new_li)

 

 

 

posted @ 2017-12-19 16:50  amyleell  阅读(172)  评论(0编辑  收藏  举报