Python

Python List 列表

2019-03-26  本文已影响30人  JunChow520
Python序列结构

列表

列表是什么

languages = ["python", "c", "shell"]
print(languages)
# ['python', 'c', 'shell']

访问列表元素

languages = ["python", "c", "shell"]
print(languages, languages[0], languages[len(languages)-1])
# ['python', 'c', 'shell'] python shell
languages = ["python", "c", "shell"]
print(languages, languages[0], languages[len(languages)-1], languages[-1])
# ['python', 'c', 'shell'] python shell shell
languages = ["python", "c", "shell"]
print("My first language was " + languages[0].title() + ".")
# My first language was Python.

修改列表元素

languages = ["python", "c", "shell"]
languages[0] = "lua"
print(languages)
# ['lua', 'c', 'shell']

列表追加元素

languages = ["python", "c", "shell"]
languages[0] = "lua"
languages.append("c++")
print(languages)
# ['lua', 'c', 'shell', 'c++']
heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

列表插入元素

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

heroes.insert(0, "black panther")
print(heroes)
# ['black panther', 'spider man', 'iron man', 'captain american', 'black widow', 'hulk']

heroes.insert(-1, "cable")
print(heroes)
# ['black panther', 'spider man', 'iron man', 'captain american', 'black widow', 'cable', 'hulk']
列表

列表删除元素

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

del heroes[0]
print(heroes)
# ['iron man', 'captain american', 'black widow', 'hulk']

del heroes[-1]
print(heroes)
# ['iron man', 'captain american', 'black widow']
heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

hero = heroes.pop()
print(heroes, hero)
# ['spider man', 'iron man', 'captain american', 'black widow'] hulk

hero = heroes.pop(0)
print(heroes, hero)
# ['iron man', 'captain american', 'black widow'] spider man

hero = heroes.pop(-1)
print(heroes, hero)
# ['iron man', 'captain american'] black widow

根据值删除元素

若只知道需要删除元素的值而不知道元素在列表中的位置,可使用remove()删除。

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

heroes.remove("iron man")
print(heroes)
# ['spider man', 'captain american', 'black widow', 'hulk']
列表方法

组织列表

在创建列表时元素的排列顺序是无法预料的,但经常会需要以特定的顺序呈现。有时又希望保留列表元素最初的排列顺序,有时候又需要调整排列顺序。

列表排序

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

heroes.sort()
print(heroes)
# ['black widow', 'captain american', 'hulk', 'iron man', 'spider man']

heroes.sort(reverse=True)
print(heroes)
# ['spider man', 'iron man', 'hulk', 'captain american', 'black widow']
heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

list = sorted(heroes)
print(heroes, list)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk'] ['black widow', 'captain american', 'hulk', 'iron man', 'spider man']

list = sorted(heroes, reverse=True)
print(heroes, list)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk'] ['spider man', 'iron man', 'hulk', 'captain american', 'black widow']

列表反转

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

heroes.reverse()
print(heroes)
# ['hulk', 'black widow', 'captain american', 'iron man', 'spider man']

列表长度

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

len = len(heroes)
print(len)
# 5

使用列表时避免索引错误

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

索引错误IndexError:列表的索引是从0开始的

print(heroes[len(heroes)])
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print(heroes[len(heroes)])
IndexError: list index out of range

操作列表

遍历列表

当需要遍历列表中每个元素,可使用for循环。

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

for hero in heroes:
    print(hero.title())
# Spider Man
# Iron Man
# Captain American
# Black Widow
# Hulk

循环是让计算机自动完成重复工作的常用方式之一,循环时对列表中的每个元素,都将执行循环指定的步骤,不管列表包含多少个元素。在循环中,使用单复数分别表示元素和列表,是一个非常好的实践。

for循环中,每个缩进的代码行都是循环体的一部分,将针对列表中的每个值都会执行一次。

heroes = []
heroes.append("spider man")
heroes.append("iron man")
heroes.append("captain american")
heroes.append("black widow")
heroes.append("hulk")
print(heroes)
# ['spider man', 'iron man', 'captain american', 'black widow', 'hulk']

for hero in heroes:
    print(hero.title() + " Hehe...")
    print(hero.capitalize() + "\n")
# Spider Man Hehe...
# Spider man
# 
# Iron Man Hehe...
# Iron man
# 
# Captain American Hehe...
# Captain american
# 
# Black Widow Hehe...
# Black widow
# 
# Hulk Hehe...
# Hulk

避免缩进错误

for hero in heroes:
print(hero.title() + " Hehe...")
    print(hero.capitalize() + "\n")

缩进错误IndentationError

  File "test.py", line 11
    print(hero.title() + " Hehe...")
        ^
IndentationError: expected an indented block

为避免意外缩进错误,请只缩进需要缩进的代码。

for hero in heroes:
    print(hero.title() + " Hehe...")
    print(hero.capitalize() + "\n")

    print("the end")

从语法上看,代码是合法的,但由于存在逻辑错误,结果并不符合预期。

# Spider Man Hehe...
# Spider man
# 
# the end
# Iron Man Hehe...
# Iron man
# 
# the end
# Captain American Hehe...
# Captain american
# 
# the end
# Black Widow Hehe...
# Black widow
# 
# the end
# Hulk Hehe...
# Hulk
# 
# the end

遗漏了冒好将导致语法错误 SyntaxError

for hero in heroes
    print(hero.title() + " Hehe...")
    print(hero.capitalize() + "\n")
print("the end")
  File "test.py", line 10
    for hero in heroes
                     ^
SyntaxError: invalid syntax

数字列表

列表非常适合存储数字集合,python提供很多工具函数帮助高效地处理数字列表。

for item in range(1,3):
    print(item)
# 1
# 2
print(list(range(1,10)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1, 10, 2)))
# [1, 3, 5, 7, 9]

print(list(range(0, 10, 2)))
# [0, 2, 4, 6, 8]

squares = []
for item in range(1, 11):
    squares.append(item**2)
print(squares)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

数字列表统计

对数字列表执行简单的统计计算

list = []
for item in range(1, 11):
    list.append(item**2)
print(list)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

min = min(list)
print(min)
# 1

max = max(list)
print(max)
# 100

sum = sum(list)
print(sum)
# 385

列表解析

列表解析会将for循环和创建新元素的代码合并为一行,并自动附加新元素,用来生成列表。

list = [item**2 for item in range(1, 11)]
print(list)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表切片

list = [item**2 for item in range(1, 11)]
print(list)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

piece = list[0:5]
print(piece)
# [1, 4, 9, 16, 25]

如果没有指定第一个起始索引则默认从列表开头开始

piece = list[:5]
print(piece)
# [1, 4, 9, 16, 25]

如果要让切片终止于列表末尾,可不用指定第二个结束索引。

piece = list[5:]
print(piece)
# [36, 49, 64, 81, 100]

如果不指定起始索引和结束索引,则会返回原列表。

piece = list[:]
print(piece)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

负数索引可以返回离列表末尾相应距离的元素

piece = list[-5:]
print(piece)
# [36, 49, 64, 81, 100]

遍历切片

如果要遍历列表中的部分元素,可以在for循环中使用切片。

for item in list[0:5]:
    print(item)

复制列表

要复制列表可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引[:]

list = [item**2 for item in range(1, 11)]
print(list)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

copy = list[:]
print(copy)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
上一篇 下一篇

猜你喜欢

热点阅读