列表

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

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

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

索引,切片,步长

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] 

任何排序都不如sortreverse快。如果没有明确要求指定排序方法,优先使用sortreverse

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]
  • 将alex 变成首字母大写的Alex
  • 将wusir变成全部大写的wusir放到原处
  • 将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)

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


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)

作业

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

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中出现的次数,并输出该次数。

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

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

# 4)请修改列表第2个位置的元素为'Kelly',并输出修改后的列表
li[2] = 'Kelly'
print(li)

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

l2=[1,'a',3,4,'heart']
print(li+l2)
# 6)请将字符串s = 'qwert'的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
s = 'qwert'
li.extend(s)
print(li)

# 7)请删除列表中的元素'eric',并输出添加后的列表
li.remove('eric')
print(li)

# 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
print(li.pop(2))
print(li)

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

# 10)请将列表所有得元素反转,并输出反转后的列表
li.reverse()
print(li)

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

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

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]

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

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

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

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

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

# 5)通过对li列表的切片形成新的列表l5,l5 = ['c']
print(li[-1:])

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

print(li[-3:-8:-2])

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

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

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

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

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

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
# 1)将列表lis中的'tt'变成大写(用两种方式)。
lis[3][2][1][0] = 'TT';
print(lis)
lis[3][2][1][0]  = lis[3][2][1][0] .upper()
print(lis)

# 2)将列表中的数字3变成字符串'100'(用两种方式)。
lis[1] = '100'
lis[3][2][1][1]= '100'
print(lis)

lis[1] = '100'
lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
print(lis)

# 3)将列表中的字符串'1'变成数字101(用两种方式)。
lis[3][2][1][2] = 101
print(lis)

lis[3][2][1][2] = lis[3][2][1][2] + 100
print(lis)

请用代码实现:i = ['alex','eric','rain']

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

i = ['alex','eric','rain']
print('_'.join(i))

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

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

li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
new_li = []
for i in li:
    s = i.strip()
    if s.startswith('A') or s.startswith('a'):
        new_li.append(s)

print(new_li)

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

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

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

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)

有如下列li = [1,3,4,'alex',[3,7,8,'taibai'],5,'ritian']'循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。

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

1
3
4
'alex'
3
7,
8
'taibai'
5
ritian

第一种执行思路:


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)

第二种执行思路:

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

004_Python的列表切片,增删改查,常用操作方法,元组,range,join的更多相关文章

  1. 列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range

    1 内容总览 列表的初识 列表的索引切片 列表的增删改查 列表的嵌套 元组的初识(了解) 元组的简单应用(了解) range 2 具体内容 列表的初识 why: str: 存储少量的数据.切片出来全都 ...

  2. 列表(索引切片 增删改查 嵌套) range 元组的初识

    li = ["alex", "WuSir", "ritian", "barry", "wenzhou" ...

  3. python列表的增删改查和嵌套

    列表 python常用的数据类型 可承载任意的数据类型 列表是有序的,可索引.切片(步长) 列表的创建 list1 = [1, 2, 'whll'] #1. list2 = list() #2. #3 ...

  4. Python列表的增删改查排嵌套特殊输出格式

    Python列表的增删改查排嵌套特殊输出格式 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二 ...

  5. day5 列表的增删改查

    1,列表的增删改查,其他操作.2,元祖.3,列表的嵌套操作.4,开一点dict. 昨日内容回顾: 字符串的方法:1,find通过元素找索引,可切片,找不到返回-12,index,找不到报错.3,spl ...

  6. Python(二)列表的增删改查

    一,列表的增删改查 列表中增加元素: 1,从列表的末尾增加一个元素:append("") 2,从列表中插入一个元素:insert(下标位置,插入的元素) 合并列表: 1,name. ...

  7. Mysql数据库基础增删改查常用语句命令

    Mysql增删改查常用语句命令 一.增删改查语句总览 创建: create(创建数据库) 增:insert(插入表数据) 删:drop.delete(删除表.删除表数据) 改:update.alter ...

  8. 元组,列表的增删改查, for,range 循环

    1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删 ...

  9. HBase数据库增删改查常用命令操作

    最近测试用到了Hbase数据库,新建一个学生表,对表进行增删改查操作,把常用命令贴出来分享给大家~ 官方API:https://hbase.apache.org/book.html#quickstar ...

随机推荐

  1. 《SQL 反模式》 学习笔记

    第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...

  2. CodeForces - 876B H - 差异的可分割性

    现在有n个整数,在这n个数中找出k个数,保证这k个数中任意两个数差的绝对值可以被m整除. Input第一行输入三个整数n,k,m(2<=k<=n<=100000,1<=m< ...

  3. openssl进行RSA加解密(C++)

    密钥对根据RSA的加密机制(自行查找RSA工作原理),通常可以私钥加密-公钥解密(多用于签名),公钥加密-私钥解密(多用于数据传输加密),私钥可以生成公钥. 密钥对生成生成私钥,长度为2048,默认格 ...

  4. SpringCloud-Ribbon负载均衡机制、手写轮询算法

    Ribbon 内置的负载均衡规则 在 com.netflix.loadbalancer 包下有一个接口 IRule,它可以根据特定的算法从服务列表中选取一个要访问的服务,默认使用的是「轮询机制」 Ro ...

  5. pytorch seq2seq闲聊机器人beam search返回结果

    decoder.py """ 实现解码器 """ import heapq import torch.nn as nn import con ...

  6. pytorch LSTM情感分类全部代码

    先运行main.py进行文本序列化,再train.py模型训练 dataset.py from torch.utils.data import DataLoader,Dataset import to ...

  7. Python之学会测试,让开发更加高效(一)

      前几天,听了公司某位大佬关于编程心得的体会,其中讲到了"测试驱动开发",感觉自己的测试技能薄弱,因此,写下这篇文章,希望对测试能有个入门.这段时间,笔者也体会到了测试的价值,一 ...

  8. Win7+Linux双系统,完美解决删除Linux后出现的任何问题!

    首先,进入到Win7,安装MiniTool Partition Wizard Home Edition删除掉Linux分区, 点Yes 然后选中 这里选中这个,重写MBR,开机神马grub神马问题都没 ...

  9. Certified Scrum Master CSM 中文资料大全

    课程概览 本课程由中国唯一一位获CST认证培训师及LeSS-Friendly Scrum Trainer双重认证讲师,丰富一线实战经验的Scrum教练讲授:姜信宝 BoB Jiang. 敏捷变革中心是 ...

  10. c++指定输出小数的精度

    在c++中,有的时候要对输出的double型或float型保留几位小数,这时可以使用setflags(ios::fixed),不过要先包含有文件<iomainp>,具体如下 例: #inc ...