Python 列表与元组基础知识

列表 list 和 元组 tuple 是Python中最常见的两种数据结构 

都是可以放置任意数据类型有序集合 

在大多数编程语言中,集合的数据类型必须一致,但在Python 的列表和元组中,无此要求

# list
l = [1, "hello", 1.23, {"name": "xiaoming"}, [1, 2, 3], (1, 2, 3), {1, 2, 3, 2, 3}]
# tuple
t = (1, "hello", 1.23, {"name": "xiaoming"}, [1, 2, 3], (1, 2, 3), {1, 2, 3, 2, 3})

列表是动态的 mutable

元组是静态的 immutable ,tuple的每个元素,指向的地址不变

l = [1,2,3]
t = (1,2,3,l)
l.append("hello")
print(t)

# 输出 (1, 2, 3, [1, 2, 3, 'hello'])

这里的元组t 有一个可变元素 l,l 值改变后,t 看似发生了改变,但是t 中元素指向的地址仍不变

list 和 tuple 内部实现都是 array

列表生成式

# 生成 0~10 的列表
# range(0,11) == range(11) ==range(0,11,1)
# range(stop) -> range object
# range(start, stop[, step]) -> range object

l = [i for i in range(0, 11)]
print(l)

# 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 生成 0~10 偶数
# 1. 取余数
l = [i for i in range(0, 11) if i % 2 == 0]
print(l)

# 2. 切片
l = [i for i in range(0, 11)][0::2]
print(l)

# 3. range(start, stop[, step])
l = [i for i in range(0, 11, 2)]
print(l)

# 输出都是 [0, 2, 4, 6, 8, 10]

列表去重

1. list --> set --> list

l = [1, 2, 2, 3, 3, 3, 4, 4, 4]
l = list(set(l))
print(l)

# 输出 [1, 2, 3, 4]

2. dict

l = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counter = {}
for i in l:
    # 判断此元素是否有多个
    if i in counter:
        counter[i] += 1
    else:
        counter[i] = 1
# key:value  key 为去重后元素, value 为该元素出现次数
print(counter)
print(list(counter.keys()))

# 输出
# {1: 1, 2: 2, 3: 3, 4: 4}
# [1, 2, 3, 4]
原文地址:https://www.cnblogs.com/jyang/p/13394688.html