Python基础-05 列表

列表的基本使用

  • 当我们有多个数据需要按照一定的顺序进行保存的时候,可以考虑使用列表
  • 使用[]来表示一个列表,列表里面的每一个数据我们称之为元素
  • 元素之间使用逗号进行分隔
names = ['zhangsan','lisi','wangwu','ermazi','dazhutou']
# 可以使用list(可迭代对象)将可迭代对象转换成一个列表
print(list(('aaa','bbb','ccc','ddd')))  # ['aaa', 'bbb', 'ccc', 'ddd']

# 和字符串一样,列表可以使用下标来获取元素和对元素进行切片
print(names[3])  # ermazi
print(names[3:6])  # ['ermazi', 'dazhutou']

# 同时,可以使用下标来修改列表里面的元素
names[3] = 'erliuzi'
print(names)  # ['zhangsan', 'lisi', 'wangwu', 'erliuzi', 'dazhutou']

列表的操作

  • 列表是用来保存多个数据,是有序可变的
  • 操作列表,一般都包含增删改查

  • 添加元素的方法 append insert extend
names = ['zhangsan','lisi','wangwu','ermazi','dazhutou']

names.append('liuziheng')  # append在列表的最后追加一个数据
print(names)  # ['zhangsan', 'lisi', 'wangwu', 'ermazi', 'dazhutou', 'liuziheng']

names.insert(2,'zhuzhuzhu')  # insert 在指定的索引之前插入一个数据
print(names)  # ['zhangsan', 'lisi', 'zhuzhuzhu', 'wangwu', 'ermazi', 'dazhutou', 'liuziheng']

other_names = ['aaa','bbb','ccc']
names.extend(other_names)  # extend 在指定的列表后拼接一个可迭代对象
print(names)  # ['zhangsan', 'lisi', 'zhuzhuzhu', 'wangwu', 'ermazi', 'dazhutou', 'liuziheng', 'aaa', 'bbb', 'ccc']

  • 删除元素的方法 pop remove clear
names = ['zhangsan','lisi','wangwu','ermazi','dazhutou']

x = names.pop()  # pop 方法可以根据传入的index参数删除并返回列表中的元素,默认参数是最后一个
print(x)  # dazhutou
print(names)  # ['zhangsan', 'lisi', 'wangwu', 'ermazi']

names.remove('lisi')  # remove 方法根据传入的参数删除指定的元素,如果元素不存在,则报错
print(names)  # ['zhangsan', 'wangwu', 'ermazi']

names.clear()  # clear 方法用来清空一个列表
print(names)  # []

  • 使用下标可以直接修改类表中的元素

  • 查找元素的方法 index in
names = ['zhangsan','lisi','wangwu','ermazi','dazhutou']

x = names.index('zhangsan')  # index 返回元素在列表中的下标,元素不存在则报错
print(x)  # 0

x  = ('lisi' in names)  # in 判断元素是否在列表中,是返回True,否返回False
print(x)  # True

列表的遍历

  • 遍历:将所有的数据都访问一遍.遍历针对可迭代对象
  • while循环遍历
  • for…in循环遍历
names = ['zhangsan','lisi','wangwu','ermazi','dazhutou']

# while循环,通过访问每一个元素的下标来访问每一个数据
i = 0
while i < len(names):
    print(names[i])
    i += 1


# for..in循环,本质是不断的调用next方法查找下一个数据
for i in names:
    print(i)

冒泡排序

  • 可以直接使用sort内置方法对列表进行排序
n = [6,5,3,1,8,7,2,4]

x = 0
while x < 7:
    x += 1
    i = 0
    while i < len(n) -1:
        if  n[i] >  n[i+1]:
            n[i],n[i+1] = n[i+1],n[i]
        i += 1

print(n)

列表的排序反转

  • 使用内置方法sort可以对列表进行排序
  • 使用内置函数sorted,不会改变原有的列表数据,会生成一个新的有序数据
  • 使用reverse方法,相当于[::-1],可以将列表倒排
names = ['zhangsan','lisi','wangwu']

names.sort()  # 排序
print(names)  # ['lisi', 'wangwu', 'zhangsan']
names.sort(reverse=True)  # reverse 关键字,默认False,True代表倒序排列
print(names)  # ['zhangsan', 'wangwu', 'lisi']

# sorted
names = ['zhangsan','lisi','wangwu']
x = sorted(names)
print(names)  # ['zhangsan', 'lisi', 'wangwu']
print(x)  # ['lisi', 'wangwu', 'zhangsan']

# reverse
names = ['zhangsan','lisi','wangwu']
names.reverse()
print(names)  # ['wangwu', 'lisi', 'zhangsan']

names = ['zhangsan','lisi','wangwu']
print(names[::-1])  # ['wangwu', 'lisi', 'zhangsan']

可变数据类型和不可变数据类型

  • Python中的数据都是保存在内存中的
  • Python中的数据分为可变类型和不可变类型
  • 不可变类型:
    • 字符串
    • 数字
    • 元组
  • 可变类型
    • 列表
    • 字典
    • 集合
  • 不可变类型的数据如果修改值,会导致内存地址发生变化
  • 可变类型的数据,如果修改值,内存地址不会发生变化

列表的复制

  • 调用copy方法,可以复制一个列表
  • 这个新的列表和原有的列表内容一样,但是指向不同的内存空间
  • 除了使用自带的copy方法之外,也可以使用cpoy模块中的copy方法,使用效果一样
  • 切片其实就是一个浅拷贝

深拷贝和浅拷贝

import copy

# 浅拷贝
nums = [1,2,3,4,5,6]

nums1 = nums  # 赋值(不属于深/浅拷贝)

nums2 = nums.copy()  # 浅拷贝
nums3 = copy.copy(nums)  # 浅拷贝

# 深拷贝,只能用copy模块实现
words = ['hello','good',[100,200,300],'yes']

words1 = words.copy()
words[0] = '你好'
print(words1)  # ['hello', 'good', [100, 200, 300], 'yes']

words[2][0] = 1
print(words1)  # ['hello', 'good', [1, 200, 300], 'yes']
# 浅拷贝可以认为只拷贝了一层

words = ['hello','good',[100,200,300],'yes']
words2 = copy.deepcopy(words)  # 深拷贝
words[2][0] = 1
print(words2)  # ['hello', 'good', [100, 200, 300], 'yes']

你可能感兴趣的:(Python,python,开发语言)