Python列表

文章目录

  • 列表
    • 1、简介
    • 2、列表的创建和下标访问
      • 创建列表
      • 下标访问
    • 3、切片操作
    • 4、列表的遍历
    • 5、新增元素
    • 6、列表的查找和删除
      • 查找
      • 删除
    • 7、列表的拼接

列表

1、简介

如果表示的数据少,直接定义几个变量就行了,也有的时候,要表示的数据就比较多。
Python中列表和元组,就是这样的机制,可以用一个变量来表示很多个数据
就类似于其他编程语言中的"数组"

列表和元组,大部分的功能都是差不多的!但是有一个功能是非常明显的区别:

  • 列表是可变的:创建好了之后,随时能改。
  • 元组是不可变的:创建好了之后,改不了。要想改,只能丢弃旧的,搞个新的。

2、列表的创建和下标访问

创建列表

  • 使用[ ]字面值来创建
a=[]
  • 使用list()来创建
b=list()
  • 可以在[ ]中,指定初始值
    元素使用逗号分割
c=[1,2,3,4]
  • 可以在同一个列表中放不同类型的变量
    C++中的数组,只能支持单一类型的变量
d = [1, 'a', "hello", 3.14]
print(d) # [1, 'a', "hello", 3.14]

下标访问

下标访问运算符[]
把[ ]放到一个列表变量的后面,同时[ ]写上一个整数此时它就是下标访问运算符,[]中间写的这个整数,就是称为“下标"或者"索引"。

注意:Python中的下标从0开始。

  • 使用下标访问元素
e = [1, 2, 3, 4, 5]
print(e[0])  # 1
print(e[1])  # 2
print(e[2])  # 3
print(e[3])  # 4
  • 使用下标修改元素
f = [1, 2, 3, 4]
f[2] = 100
print(f)  # [1, 2, 100, 4]
  • 可以使用内建函数len()来获取列表的长度
g = [1, 2, 3, 4, 5, 6]
print(len(g))  # 6

len可以传字符串,列表,元组,字典,自定义的类…=>动态类型

  • python中的下标还可以写成负数
    例如-1,其实等价于len(a)-1
h = [1, 2, 3, 4]
print(h[len(a)-1])  # 4
print(h[-1])  # 4

3、切片操作

通过下标操作是—次取出里面第一个元素。
通过切片,则是—次取出一组连续的元素,相当于得到一个子列表。

  • 使用[:]来切片
a = [1, 2, 3, 4]
print(a[1:3])  # [2, 3]

切片操作中,[ ]里面有两个数字,表示了一段区间。
1表示开始区间的下标
3表示结束区间的下标
[1:3],取到下标为1一直到下标为3的元素!(包含1,不包含3)意思是左闭右开区间[1,3)

  • 使用切片的时候,省略边界
b = [1, 2, 3, 4]
# 省略右边界,意思是从开始取到列表结束
print(b[1:])  # [2, 3, 4]

# 省略左边界,从列表的开头取到结束的位置
print(b[:3])  # [1, 2, 3]

# 此处切片可以把下标写成负数
print(b[:-1])  # [1, 2, 3]

# 左右边界都是可以省略的,那么就是整个列表全部打印
print(b[:])  # [1, 2, 3, 4]
  • 切片操作还可以指定步长
    多增加一个冒号,带上一个数字(步长)
c = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(c[::2])  # [1, 3, 5, 7, 9]
print(c[1:-1:2])  # [2, 4, 6, 8]
  • 步长还可以是负数
    是负数的意思就是从后往前数
d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(d[::-1])  # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  • 当切片中的范围超出有效下标之后,不会出现异常!而是尽可能的把符合要求的元素给获取到
e = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(e[0:100])  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

总结:
切片操作是一个比较高效的操作,进行切片的时候,只是取出了原有列表中的一个部分,并不涉及到"数据的拷贝"假设有一个很大的列表,进行切片,切片的范围也很大,即使如此,切片操作仍然非常高效。

4、列表的遍历

  • for循环遍历
a = [1, 2, 3, 4, 5]
for elem in a:
    print(elem)
  • 使用for循环,通过下标的方式
for i in range(0, len(a)):
    print(a[i])
  • 使用while 循环,通过下标遍历
i = 0
while i < len(a):
    print(a[i])
    i += 1

5、新增元素

  • 使用append 往列表尾部新增一个元素
a = [1, 2, 3]
a.append(4)
a.append(5)
a,append("hello")
print(a)  # [1, 2, 3, 4, 5, 'hello']
  • 使用insert 方法往任意位置插入元素
b = [1, 2, 3, 4]
b.insert(1, "hello")
b.insert(len(b), "world")
print(b)  # [1, 'hello', 2, 3, 4, 'world']

6、列表的查找和删除

查找

  • 使用 in 判断某个元素是否在列表中(not in)
a=[1,2,3,4]
print(1 in a)  # True
print(10 in a)  # False
print(10 not in a)  # True
  • 使用index()方法,判断元素在列表中的位置,返回下标
print(a.index(4))  # 3
print(a.index(100))  # 抛异常

删除

  • pop()方法,删掉列表末尾的元素
b = [1, 2, 3, 4]
b.pop()
print(b)  # [1, 2, 3]
  • 使用pop(index) 删除index下标位置的元素
c = [1, 2, 3, 4]
c.pop(1)
print(c)  # [1, 3, 4]
  • remove() 可以按照值来删除
d = [1, 2, 3, 4, "hello", 3.14]
d.remove(3.14)
print(d)  # [1, 2, 3, 4, 'hello']

7、列表的拼接

  • 使用 +来拼接
    此处的+结果会生成—个新的列表.而不会影响到旧列表的内容.
a = [1, 2, 3]
b = [3.14, 555]
c = a+b
print(c)  # [1, 2, 3, 3.14, 555]
  • 使用extend 方法,相当于把—个列表拼接到另—个列表的后面.
    a. extend(b),是把 b中的内容拼接到a的末尾.不会修改 b,但是会修改a.
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = a.extend(b)
print(a)  # [1, 2, 3, 4, 5, 6, 7, 8]
print(b)  # [5, 6, 7, 8]
print(c)  # None

None这是一个特殊的变量的值,表示"啥都没有",None非常类似于C里面的NULL。

extend方法,其实是没有返回值的!拿一个变量来接收一个没有返回值的方法的返回值。

  • 可以使用+=来拼接
a = [11, 22, 33, 44]
b = [55, 66]
a += b
print(a)  # [11, 22, 33, 44, 55, 66]
print(b)  # [55, 66]

两者区别:

a += b等价于a = a + b (有临时变量生产,清除原来的值,然后拷贝新值)
a.extend(b)则是直接把b的内容拼到了a的后面(没有多余的拷贝) => 更加高效

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