python入门之列表


一、列表下标

name = ['zmz', 'zbb', 'zmh']

print(name)
print(name[0:3:])   # []里面可以是切片类型
print(name[2])      # zmh
print(name[0:2])    # ['zmz', 'zbb']

a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
list1 = [a, b, c, d, e, f]
print(list1)
print(list1[0:3])

二、列表查找

str1 = ['zbb', 'zmz', 'zmz', 'zmh']

# 1.index() -- 查找子串,返回其在列表中的下标
print(str1.index('zmz'))        # 范围可省略
print(str1.index('zmz', 2, 3))  # 2,3表示范围在str1的 第2项 到 第3项 (下标)
# print(str1.index('zmb'))

# 2.count() -- 查找子串在列表中出现的个数并返回
print(str1.count('zmz'))        # 1
print(str1.count('zmzs'))       # 0 ****列表中使用count()时不能添入范围(不能像第4行index那样)

# 3.len() -- 返回列表长度,即列表中元素(子串)的个数
print(len(str1))
# ****len()是一个公共操作,字符串,元组,字典等类型数据也适用

三、列表中判断元素是否存在

str1 = ['zbb', 'zmz', 'zmz', 'zmh']

# 1.in -- bool型,****公共操作
print('zbb' in str1)
print('zbbr' in str1)

# 2.not in -- bool型,****公共操作
print('zbb' not in str1)
print('zbbr' not in str1)

'''
用户名输入体验案例
'''
name = ['a', 'b', 'c', 'd', 'e']
i = 1
while i > 0:
    new_name = input('please input: ')
    if new_name in name:
        print("'%s' is invalid name" % new_name)
    else:
        print(f"your name is '{new_name}'")
        break

四、列表插入

name = ['a', 'b', 'c']
print(name)

# 1.append() -- 增加数据到列表的结尾处
name.append('f')        # 可以用new_name来接收name的返回值,由于name本身已发生改变,设变量接收已无意义
print(name)             # 列表是可变数据类型,这一点和字符串相反
name.append('g,h')      # 追加一个字符串到列表结尾
print(name)
name.append([11, 12])   # 追加一个列表到列表结尾,是以一个整体作为列表结尾的一个元素
print(name)

print('...................')

# 2.extend() -- 增加数据到列表的结尾处
name_1 = ['a', 'b', 'c']
print(name_1)
name_1.extend('def')                    # extend追加字符串时会把字符分开追加,与append不同
print(name_1)
name_1.extend(['zmz', 'zbb', 'zmh'])    # extend追加一个列表时会把元素分开追加
print(name_1)

print('...................')

# 3.insert(指定位置, 数据) -- 追加数据到指定位置,原来的该位置及之后所有数据依次后移
name_2 = [1, 'b', 'c']
name_2.insert(2, 'zmz')
print(name_2)

五、列表删除

# 1.del 目标 或 del (目标) -- 删除整个列表或者列表中的某一个元素
name = ['a', 'b', 'c']
del name[0]
print(name)
del name
# print(name)

print('............')

# 2.pop(下标) -- 删除指定下标的元素,同时返回这个元素,如果不指定,默认删除末尾元素
name_1 = ['a', 'b', 'c']
pop_name = name_1.pop(1)        # 删除 第1位 元素并返回
print(pop_name)
print(name_1)

print('............')

# 3.remove() -- 删除指定的元素
name_2 = ['a', 'b', 'c']
name_2.remove('c')
print(name_2)

print('............')

# 4.clear() -- 删除整个列表中的元素,列表还存在,只不过是空的
name_3 = ['d', 'e', 'f']
name_3.clear()
print(name_3)

六、列表修改

name = ['zmz', 'lsy', 'zbb']

# 1.直接赋值修改
name[0] = 'zbb'
print(name)

name.sort()
print(name)

# 2.reverse() -- 逆置:将列表倒置
list1 = ['1', 'a', '4', 'bn', '-']
list1.reverse()
print(list1)

# 3.sort() -- 升序或者降序排序
print(list1)
list1.sort(reverse=False)       # 升序,默认
print(list1)
list1.sort(reverse=True)       # 降序
print(list1)

a = input().split(" ")
a.sort(reverse=False)
for i in a:
    print(i, end=" ")

# 4.copy -- 复制列表
list1 = [1, 2, 4, 5, 6]
list1_copy = list1.copy()
print(list1_copy)
print(list1)

七、列表遍历

name = ['zmz', 'zbb', 'lss', 'drj']
print(name)
i = 0

while i < len(name):
    print(name[i])
    i += 1

print('................')

for i in name:
    print(i)

八、列表嵌套

name = [['zmz', 'zbb', 'lsy'], [1, 2, 3], ['zzc', 'zmz', 'zmh']]

print(name[0])
print(name[0][2])

'''
办公室分配
步骤 :
1.准备数据
    1.1  8位老师 -- 采用列表存储
    1.2  3个办公室 -- 嵌套列表
2.分配老师到办公室
    **** 随机分配
    方法:把老师对应的名字写入列表 -- 列表追加函数
3.验证是否分配成功
    打印出办公室列表的数据
'''

# 准备数据
import random
teachers = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
offices = [[], [], []]

# 分配数据
for name in teachers:
    num = random.randint(0, 2)
    offices[num].append(name)
print(offices)

# 打印验证
i = 1
for office in offices:
    print(f'办公室{i}的人数为{len(office)},分别是:')
    for name in office:
        print(name, end='\t')
    print()
    i += 1

九、列表sort()和sorted

# 以对列表进行排序为例:
n = [1, 3, 2, 0]
nn = sorted(n)
print(nn)

m = ['b', 'a', 'd', 'c']
mm = m.sort()
print(mm)
# 如上,我们分别对列表n使用sorted()方法排序,对列表m使用sort()方法排序。

"""
如上图展示,我们可以得出:
1、sorted方法会在内存中创建一个新的列表对象并在其中对列表元素进行排序。
2、sort方法直接在原始列表上进行排序。
3、sorted方法有返回值,sort方法无返回值。

用法总结:
1、你需要保留原始对象的时候选择:sorted
2、需要节省内存的时候选择:sort
3、需要有返回值的时候用:sorted
"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十四桥_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值