python基础笔记1:数据类型List
数据类型List
name4 = 2333
name = ['name1', 'name2', f'name3', 2333-333, name4]
print(name) # ['name1', 'name2', 'name3', 2000, 2333] 可以看出单引号是String的默认字面量
print(type(name)) # <class 'list'>
print(name[3]) # 2000 List用法与C语言数组类似
print(name[-1]) # 2333 负数索引
# 遍历列表方式1:
for na in name:
print(na) #每个元素换行输出
# 遍历列表方式2:
for i in range(len(name)):
print(name[i])
name.pop() # 删除末尾
name.pop(i) # 删除下标i元素
name.append("A") # 末尾加元素
name.insert(1,"B") # 指定位置加元素
列表操作符:
print([1, 2] + [3, 4]) # [1, 2, 3, 4]
print([1, 2] * 3) # [1, 2, 1, 2]
print(3 in [1, 2, 3]) # True
print(type(2 not in [1, 2, 3])) # <class 'bool'>
列表的函数与方法:
len(list) # 长度,元素个数
max(list) # 最大元素(list需要同类型)
list(sep) # 元组转化为列表
list.count(obj) # 元素出现次数
list.extend(seq) # 将seq序列加到list尾部
list.index(obj) # 查找元素第一次出现位置
list.remove(obj) # 移除第一个匹配元素
list.sort() # 排序
list.reverse() # 翻转
# 排序元素也可以是list,比第一个元素:
name = [ [1,2333], [5,1,"2"], [3,4] ]
name.sort()
# [[1, 23333], [3, 4], [5, 1, '2']]
切片:
a = [1, 2, 3, 4, 5, 6, 7]
b = a[i:j:k]
# a中下标从i到j的切片,每次增加k位
c = a[::-1]
# k可以是负数,即倒序枚举,效果与reverse同
列表推导式:
# 可以遍历的内容:iterable(可迭代对象) 包括:字符串(str)、列表(list),元组(tuple)、字典(dict)、集合(set),生成器(generator)
a = [1, 2]
b = [i**2 for i in a]
s = f"ab{a}cd"
z = [i for i in s]
print(b) # [1, 4]
print(z) # ['a', 'b', '[', '1', ',', ' ', '2', ']', 'c', 'd'] 十分无脑的字符串组成
n = 10
fa = [x for x in range(n)] # 并查集初始化fa数组
for i in range(n):
print(fa[i])
# 下面两个二重循环表示方式等价
a = [(x, y) for x in range(1,4) for y in range(1,3)]
print(a)
a.clear()
for x in range(1,4):
for y in range(1,3):
a.append((x,y))
print(a) # [(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]
列表推导式记录字典元素,单循环枚举多变量:
d = {'x': 1, 'y': 2, 'z': 4}
print(d) # {'x': 1, 'y': 2, 'z': 4}
print(d.items()) # dict_items([('x', 1), ('y', 2), ('z', 4)])
d_list1 = [k for k in d]
d_list2 = [k for k in d.items()]
d_list3 = [k+"="+str(v) for k,v in d.items()]
print(d_list1) # ['x', 'y', 'z']
print(d_list2) # [('x', 1), ('y', 2), ('z', 4)]
print(d_list3) # ['x=1', 'y=2', 'z=4']
含if的列表推导式:
if_list = [x**2 for x in range(10) if x&1]
print(if_list) # [1, 9, 25, 49, 81]
# 三目运算:
print([(x**2 if x%2==0 else x+2) for x in range(10)])
# [0, 3, 4, 5, 16, 7, 36, 9, 64, 11]
选取离散元素:
a = [1, 2, 3, 4, 5, 6]
print([a[i] for i in [0,1,3]]) # [1, 2, 4]