python实现四位一并法_python 全栈开发,Day4(列表切片,增删改查,常用操作方法,元组,range,join)...

一、列表

列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

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

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据。列表是有序的,有索引值,可切片,方便取值。

索引,切片,步长

li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'xiao'}]

print(li[0])

print(li[2])

print(li[1:4])

print(li[:5:2])

#倒着取,后2个

print(li[-1:-3:-1])

执行输出:

xiao

True

[123, True, (1, 2, 3, 'wusir')]

['xiao', True, [1, 2, 3, '小明']]

[{'name': 'xiao'}, [1, 2, 3, '小明']]

下面介绍列表的增、删、改、查

append() 追加,在最后一个位置添加元素

li = [1,'a','b',2,3,'a','laonaihai']

li.append('xiao')

print(li)

执行输出:

[1, 'a', 'b', 2, 3, 'a', 'laonaihai', 'xiao']

insert() 按照索引添加

将元素插入到指定的索引值位置,后面的元素索引值会自动加1

li = [1,'a','b',2,3,'a','laonaihai']

li.insert(2,'zhang')

print(li)

仔细输出:

[1, 'a', 'zhang', 'b', 2, 3, 'a', 'laonaihai']

extend() 迭代着添加

在最后的位置,迭代每一个元素,依次添加。

li = [1,'a','b',2,3,'a','laonaihai']

li.extend('ABC')

print(li)

执行输出:

[1, 'a', 'b', 2, 3, 'a', 'laonaihai', 'A', 'B', 'C']

使用输入框方式添加元素

name_list = ['张无忌','张敏','胡歌','江疏影']

while True:

name = input('请输入新员工姓名:Q/q ').strip()

if name.upper() == 'Q':break

else:

name_list.append(name)

print('已成功添加新员工%s' % name)

print(name_list)

执行输出:

pop() 按照索引删除

默认删除最后一个

li = [1,'a','b',2,3,'a','laonaihai']

li.pop()

print(li)

执行输出:

[1, 'a', 'b', 2, 3, 'a']

删除索引值为1的元素

li = [1,'a','b',2,3,'a','laonaihai']

li.pop(1)

print(li)

执行输出:

[1, 'b', 2, 3, 'a', 'laonaihai']

pop() 是增删改查,所有方法里面,唯一有返回值的方法。

返回删除的元素。

pop()只能删除一个元素

remove() 按照元素删除,只能删除一个

li = [1,'a','b','a',2,3,'a','laonaihai']

li.remove('a')

print(li)

执行输出:

[1, 'b', 'a', 2, 3, 'a', 'laonaihai']

clear() 清空列表的所有元素

li = [1,'a','b','a',2,3,'a','laonaihai']

li.clear()

print(li)

执行输出:

[]

del 删除列表

li = [1,'a','b','a',2,3,'a','laonaihai']

del li

切片删除

li = [1,'a','b','a',2,3,'a','laonaihai']

del li[:3]

print(li)

执行输出:

['a', 2, 3, 'a', 'laonaihai']

跳着删除

li = [1,'a','b','a',2,3,'a','laonaihai']

del li[:3:2]

print(li)

执行输出:

['a', 'a', 2, 3, 'a', 'laonaihai']

使用赋值修改

按照索引改,是一个整体修改

a改成A

li = [1,'a','b','a',2,3,'a','laonaihai']

li[1] = 'A'

print(li)

执行输出:

[1, 'A', 'b', 'a', 2, 3, 'a', 'laonaihai']

切片修改

不是整体,而是迭代添加。

li = [1,'a','b','a',2,3,'a','laonaihai']

li[:3] = 'aq'

print(li)

执行输出:

['a', 'q', 'a', 2, 3, 'a', 'laonaihai']

切片,添加一个列表

li = [1,'a','b','a',2,3,'a','laonaihai']

li[:3] = [11,22,33,44]

print(li)

执行输出:

[11, 22, 33, 44, 'a', 2, 3, 'a', 'laonaihai']

切片修改的执行过程是,先删除切片部分,再迭代添加的对象,依次添加元素。

比如上面的11,22,33

索引,切片,步长,查看方法,和字符串操作是一样的,这里不再举例。

for 循环

li = [1,'a','b','a',2,3,'a','laonaihai']

for i in li:

print(i)

执行输出:

1

a

b

a

2

3

a

laonaihai

其他操作方法:

sort() 从小到大,正向排序

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

li.sort()

print(li)

执行输出:

[1, 2, 3, 4, 5, 6, 7, 8]

从大到小,反向排序

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

li.sort(reverse=True)

print(li)

执行输出:

[8, 7, 6, 5, 4, 3, 2, 1]

reverse() 翻转

翻转,就是将右边的元素和左边的元素进行对换。

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

li.reverse()

print(li)

执行输出:

[4, 3, 6, 5, 8, 7, 2, 1]

任何排序都不如sort和reverse 快。

如果没有明确要求指定排序方法,优先使用sort和reverse

len() 查看数据长度

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

print(len(li))

执行输出:

8

count() 统计元素出现次数

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

print(li.count(7))

执行输出:

1

index() 通过元素找索引

li = [1,'a','b','a',2,3,'a','laonaihai']

print(li.index('a'))

执行输出:

1

列表的嵌套

li = [1,2,'alex',['100','wusir',99],22]

1.将alex 变成首字母大写的Alex

2.将wusir变成全部大写的wusir放到原处

3.将99加1变成100,返回原处

解题答案:

li = [1,2,'alex',['100','wusir',99],22]

#首字母大写

li[2] = li[2].capitalize()

#转换大写

li[3][1] = li[3][1].upper()

#数值加1

li[3][2] += 1

print(li)

执行输出:

[1, 2, 'Alex', ['100', 'WUSIR', 100], 22]

二、元组tupe

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c"

tu = (1,2,'alex','oldboy')

#切片

print(tu[:2])

#指定索引取值

print(tu[2])

执行输出:

(1, 2)

alex

遍历元祖

tu = (1,2,'alex','oldboy')

for i in tu:

print(i)

执行输出:

1

2

alex

oldboy

有一种情况,元组的值会改变,俗称:

儿子不能改,孙子可能改

tu = (1,2,'alex',[1,'taibai'],'oldboy')

tu[3].append('yuhuang')

print(tu)

执行输出:

(1, 2, 'alex', [1, 'taibai', 'yuhuang'], 'oldboy')

一般元组,是放只读的数据。所以不会随意更改。

公用方法:count,len,index

三、range

range 当成一个数字列表,范围

范围可控,步长可正可负

打印0到9

for i in range(10):

print(i)

执行输出:

0

1

2

3

4

5

6

7

8

9

注意:range()不会打印末尾的数字,默认是从0开始的。

打印1~10之间的奇数

for i in range(1,10,2):

print(i)

执行输出:

1

3

5

7

9

打印0~10之间的偶数

for i in range(0,10,2):

print(i)

执行输出:

0

2

4

6

8

反向步长

倒序输出1到10

for i in range(10,0,-1):

print(i)

执行输出:

10

9

8

7

6

5

4

3

2

1

遍历列表元素,打印每一个索引值

li = [2,3,'alex',4,5]

for i in li:

print(li.index(i))

执行输出:

0

1

2

3

4

使用range打印索引

li = [2,3,'alex',4,5]

for i in range(0,len(li)):

print(i)

执行输出:

0

1

2

3

4

列表长度永远比索引值大1

所以可以用range方式

四、join

join用字符串做一个连接符

连接可迭代对象中的每一个元素,形成一个新的字符串

s = '@'.join('我是谁')

print(s)

执行输出:

我@是@谁

split str ---> list

使用split方法将字符串转换为列表

s1 = 'wusir taibai xiao'

print(s1.split())

执行输出:

['wusir', 'taibai', 'xiao']

join list ---> str

使用join方法将列表转换为字符串

li = ['wusir', 'taibai', 'xiao']

print(' '.join(li))

执行输出:

wusir taibai xiao

join很重要,一定要掌握

思考题:

li = [1,2,['alex','wusir'],'a','b',{'name':'xiao','age':21}]

将列表中的每一个元素打印出来,如果遇到列表,需要打印列表中的每一个元素

答案如下:

li = [1, 2, ['alex', 'wusir'], 'a', 'b']

for i in li:

if type(i) == list:

for j in i:

print(j)

else:

print(i)

执行输出:

1

2

alex

wusir

a

b

如果列表包含字典以及元组呢?

li = [1,2,['alex','wusir'],'a','b',{'name':'xiao','age':21},('d','n','f')]

for i in li:

#判断元素类型是否是整形和布尔值,除了这2种类型,其他类型都是可迭代对象

if type(i) not in [int,bool]:

# 判断元素的长度等于1,排除有多个元素的数据,比如列表,字典...

if len(i) == 1:

print(i)

else:

#循环可迭代对象

for j in i:

print(j)

执行输出:

1

2

alex

wusir

a

b

name

age

d

n

f

第2种写法:

#加载模块

from collections import Iterable

li = [1,2,['alex','wusir'],'a','b',{'name':'xiao','age':21},('d','n','f')]

for i in li:

#判断是否是可迭代对象

if isinstance(i,Iterable):

for j in i:

print(j)

else:

print(i)

执行程序,效果同上

今日作业:

1,写代码,有如下列表,按照要求实现每一个功能

li = ['alex','wusir','eric','rain','alex']

1)计算列表的长度并输出

2)列表中追加元素'seven',并输出添加后的列表

3)请在列表的第1个位置插入元素'Tony',并输出添加后的列表

4)请修改列表第2个位置的元素为'Kelly',并输出修改后的列表

5)请将列表l2=[1,'a',3,4,'heart']的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

6)请将字符串s = 'qwert'的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

7)请删除列表中的元素'eric',并输出添加后的列表

8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表

9)请删除列表中的第2至4个元素,并输出删除元素后的列表

10)请将列表所有得元素反转,并输出反转后的列表

11)请计算出'alex'元素在列表li中出现的次数,并输出该次数。

2,写代码,有如下列表,利用切片实现每一个功能

li = [1,3,2,'a',4,'b',5,'c']

1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]

2)通过对li列表的切片形成新的列表l2,l2 = ['a',4,'b']

3)通过对li列表的切片形成新的列表l3,l3 = ['1,2,4,5]

4)通过对li列表的切片形成新的列表l4,l4 = [3,'a','b']

5)通过对li列表的切片形成新的列表l5,l5 = ['c']

6)通过对li列表的切片形成新的列表l6,l6 = ['b','a',3]

3,写代码,有如下列表,按照要求实现每一个功能。

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']

1)将列表lis中的'tt'变成大写(用两种方式)。

2)将列表中的数字3变成字符串'100'(用两种方式)。

3)将列表中的字符串'1'变成数字101(用两种方式)。

4,请用代码实现:

li = ['alex','eric','rain']

利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"

5,查找列表li中的元素,移除每个元素的空格,并找出以'A'或者'a'开头,并以'c'结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:

敏感词列表 li = ["苍老师","东京热","武藤兰","波多野结衣"]

则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

7,有如下列表li = [1,3,4',alex',[3,7,8,'taibai'],5,'ritian']

循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。

我想要的结果是(用两种方法实现,其中一种用range做):

1

3

4

'alex'

3

7,

8

'taibai'

5

ritian

明日默写内容

1,将列表的增删改查不同的方法全部写出来,

例如:增:有三种,append:在后面添加。Insert按照索引添加,expend:迭代着添加。

2,默写第七题的两个方法实现的代码。

答案

第一题:

1,写代码,有如下列表,按照要求实现每一个功能

li = ['alex','wusir','eric','rain','alex']

1)计算列表的长度并输出

li = ['alex','wusir','eric','rain','alex']

s1 = len(li)

2)列表中追加元素'seven',并输出添加后的列表

li = ['alex','wusir','eric','rain','alex']

s2 = li.append('seven')

print(li)

3)请在列表的第1个位置插入元素'Tony',并输出添加后的列表

li = ['alex','wusir','eric','rain','alex']

li = ['alex','wusir','eric','rain','alex']

s3 = li.insert(1,'Tony')

print(li)

4)请修改列表第2个位置的元素为'Kelly',并输出修改后的列表

li = ['alex','wusir','eric','rain','alex']

li[2] = 'Kelly'

print(li)

5)请将列表l2=[1,'a',3,4,'heart']的每一个元素添加到列表li中,一行代码实现,不允许循环添加。

li = ['alex','wusir','eric','rain','alex']

l2=[1,'a',3,4,'heart']

li.extend(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']

print(li.pop(2))

print(li)

9)请删除列表中的第2至4个元素,并输出删除元素后的列表

li = ['alex','wusir','eric','rain','alex']

del li[2:4]

print(li)

10)请将列表所有得元素反转,并输出反转后的列表

li = ['alex','wusir','eric','rain','alex']

li.reverse()

print(li)

11)请计算出'alex'元素在列表li中出现的次数,并输出该次数。

li = ['alex','wusir','eric','rain','alex']

print(li.count('alex'))

第2题答案

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']

li1 = li[:3]

print(li1)

2)通过对li列表的切片形成新的列表l2,l2 = ['a',4,'b']

li = [1,3,2,'a',4,'b',5,'c']

li2 = li[3:6]

print(li1)

3)通过对li列表的切片形成新的列表l3,l3 = ['1,2,4,5]

li = [1,3,2,'a',4,'b',5,'c']

li3 = li[::2]

print(li3)

4)通过对li列表的切片形成新的列表l4,l4 = [3,'a','b']

li = [1,3,2,'a',4,'b',5,'c']

li4 = li[1:6:2]

print(li3)

5)通过对li列表的切片形成新的列表l5,l5 = ['c']

li = [1,3,2,'a',4,'b',5,'c']

li5 = li[-1]

print(li3)

6)通过对li列表的切片形成新的列表l6,l6 = ['b','a',3]

li = [1,3,2,'a',4,'b',5,'c']

li6 = li[-3:-8:-2]

print(li6)

第3题答案

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 = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']

lis[3][2][1][0] = 'TT'

print(lis)

2)将列表中的数字3变成字符串'100'(用两种方式)。

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']

lis[1] = 100

lis[3][2][1][1] = '100'

print(lis)

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']

lis[1] = '100'

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] = 101

print(lis)

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']

lis[3][2][1][2] = 1 + 100

print(lis)

第4题答案

4,请用代码实现:

li = ['alex','eric','rain']

利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"

li = ['alex','eric','rain']

li_new = '_'.join(li)

print(li_new)

第5题

查找列表li中的元素,移除每个元素的空格,并找出以'A'或者'a'开头,并以'c'结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

分析:

先输出每一个元素,每把每个元素去除空格

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

for i in li:

s = i.strip()

print(s)

执行输出:

taibai

alexC

AbC

egon

Ritian

Wusir

aqc

找到以'A'或者'a'开头的

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

for i in li:

s = i.strip()

if s.startswith("A") or s.startswith("a"):

print(s)

执行输出:

alexC

AbC

aqc

并以'c'结尾的,使用endswith()方法。打印出匹配的结果

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

for i in li:

s = i.strip()

if s.startswith("A") or s.startswith("a"):

if s.endswith("c"):

print(s)

执行输出:

aqc

将匹配的元素添加到一个新列表中,最后循环打印这个新列表,最终代码如下:

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']

#定义新列表

li_new = []

for i in li:

#去除空格

s = i.strip()

#找出以'A'或者'a'开头

if s.startswith("A") or s.startswith("a"):

#找出以'c'结尾的所有元素

if s.endswith("c"):

#将匹配的元素追加到新列表中

li_new.append(s)

for j in li_new:

print(j)

执行输出:

aqc

第6题

开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:

敏感词列表 li = ["苍老师","东京热","武藤兰","波多野结衣"]

则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

解题过程

先定义2个变量,一个是敏感词,一个是用户输入内容

并设置一个含有敏感词的内容,判断是否含有敏感词

li = ["苍老师","东京热","武藤兰","波多野结衣"]

comment = "我要苍老师"

for i in li:

if i in comment:

print("含有敏感词")

执行输出:

含有敏感词

将敏感词替换成***,使用replace()方法替换,打印出输入内容

li = ["苍老师","东京热","武藤兰","波多野结衣"]

comment = "我要苍老师"

for i in li:

if i in comment:

print("含有敏感词")

comment = comment.replace(i, "***")

print(comment)

执行输出:

含有敏感词

我要***

将输入内容写入到新列表中,打印列表:

li = ["苍老师","东京热","武藤兰","波多野结衣"]

comment = "我要苍老师"

#新列表

comment_list = []

for i in li:

if i in comment:

#将敏感词替换成***

comment = comment.replace(i,"***")

#添加到新列表

comment_list.append(comment)

for j in comment_list:

print(j)

执行输出:

我要***

将用户输入替换成input,完整代码如下:

li = ["苍老师","东京热","武藤兰","波多野结衣"]

comment = input("请输入评论:").strip()

#新列表

comment_list = []

for i in li:

if i in comment:

#将敏感词替换成***

comment = comment.replace(i,"***")

#添加到新列表

comment_list.append(comment)

#打印列表

for j in comment_list:

print(j)

执行输出:

第7题

有如下列表li = [1,3,4',alex',[3,7,8,'taibai'],5,'ritian']

循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。

我想要的结果是(用两种方法实现,其中一种用range做):

1

3

4

'alex'

3

7,

8

'taibai'

5

ritian

for循环 代码如下:

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)

执行输出:

1

3

4

alex

3

7

8

taibai

5

ritian

range方式,代码如下:

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])

执行程序,效果同上。

明日默写内容

1,将列表的增删改查不同的方法全部写出来,

例如:增:有三种,append:在后面添加。Insert按照索引添加,expend:迭代着添加。

append() 追加,在最后一个位置添加元素

insert() 按照索引添加

expend 迭代着添加

pop() 按照索引删除

remove() 按照元素删除

clear() 清空列表的所有元素

del 删除列表

按照索引修改

切片修改

index() 查看索引

根据索引

切片

步长

2,默写第七题的两个方法实现的代码。

for循环 :

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)

range方式:

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])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值