列表和元组

列表和元组(tuple)中的元素可以是任意类型的Python数据对象。 元组不可变,列表可变

列表

  • list() 创建一个空列表
  • list(str) 将string类型的数据转换为列表

  • list[start:end:step] 列表切片,不包含位于end-index的元素

# 列表切片不会改变原有列表,而是生成新的列表
old_list = [0, 1, 2, 3, 4]
# list切片
new_list = old_list[0:2] # [0, 1]
print(old_list) # [0, 1, 2, 3, 4]

# list逆序排列
new_list = old_list[::-1] # [4, 3, 2, 1, 0]

# 可以通过切片赋空值的形式达到删除的效果
old_list[0:2] = []
print(old_list) # [2, 3, 4]
# 或者del进行删除
del old_list[0:1]
print(old_list) # [3, 4]

  • list.append(params)
  • list.extend(list2) 合并列表
  • list += list2 合并列表

  • list.insert(index, params) 在指定位置上插入元素
  • del list[index] 删除指定位置的元素。当列表中一个元素被删除之后,位于它后面的元素会自动向前补充,列表长度减一
  • list.remove(params) 删除指定元素
  • list.pop() 获取并删除指定位置的元素
# pop(0)返回列表的头元素,pop()或pop(-1)则返回列表的尾元素
old_list = [0, 1, 2, 3, 4]
old_list.pop() # 4
print(old_list) # [0, 1, 2, 3]

  • list.index(params) 查询指定元素所在的位置(仅匹配第一个)
  • params in list 判断元素是否存在于列表中
  • list.count(params) 记录某个特定值在列表中出现的次数

  • list.sort() 对列表进行排序,改变原有列表
  • list.sorted() 返回排好序的列表副本,不改变原有列表
  • sort(reverse = True) 默认的排序为升序,将reverse设为True则可进行倒序排列

如果将一个列表赋值给了多个变量,改变其中的任何一处,则会造成其他变量对应的值也被改变

a = [1, 2, 3]
b = a
a[0] = 4
print(b) # [4, 2, 3]

通过拷贝一份列表,可以避免以上情况

# old_list.copy()
# list(old_list)
# old_list[:]
a = [1, 2, 3]
b = a.copy()
# or b = list(a)
# or b = a[:]
a[0] = 4
print(b) # [1, 2, 3]

元组

  • () 创建空元组
  • a, b = ('example', 'example2') 解构元组
  • tuple(list) 将list转换为元组

创建包含一个或多个元素的元组时,每一个元素后面都需要跟着一个逗号。如果多于一个元素,则最后的那个逗号可以省略。

创建元组

# 创建空元组
empty_tuple = ()
empty_tuple = tuple()

example_tuple = 'example0', 'example1', 'example2'

# 创建单一元组
sinple_tuple = 'example',
# 注:在创建单一元组时,将值放在括号内不会创建元组
sinple_tuple = ('example')
print(type(sinple_tuple)) # str

解构元组

a, b, c = example_tuple # 将元组里的值赋值给变量 -- 元组解包
a, b, *rest = range(10)
a # 0
b # 1
rest # [2, 3, 4, 5, 6, 7, 8, 9]

first, second, *rest, last = range(10)
last # 9

元组在函数中的运用

# 该函数可以接受任意长度的参数,并在函数内部组建成为元组的形式
def print_all(*args):
    print(args)
print_all(1, 2, 3, 4) # (1, 2, 3, 4)

# 将元组分散后传入函数
def print_two(a, b):
    print(a)
    print(b)
print_two(*(1, 2))
# 1
# 2

# 当函数返回多个参数时。。
def return_multiply():
    # do something
    return a, b
# 返回值是元组的形式
# example:
def return_multiply(*args):
    a, b = args
    return a, b

result = return_multiply(1, 2)
print(type(result)) # <class 'tuple'>
print(result) # (1, 2)

results matching ""

    No results matching ""