# list
# 定义list
a = []
a = [1, 2, 3, 4]
# 长度
print(len(a))
# 强制类型转换
str1 = "abcd"
print(list(str1))
"".join(list(str1)) # 转换回去
print(str1)
# 相加
print([1] + [1])
a = ['test']
b = ['extend']
a.extend(b)
print(a)
# 相乘(本质在复制
print([1] * 5)
# 添加元素(改变list本身,没有返回值,不能写list1=list1.append(1)
list1 = []
list1.append(1)
print(list1)
# 插入元素
list1.insert(0, 'insert')
print(list1)
# in
list1 = [1, 2, 3, 4]
if 1 in list1:
print('1 is in list1')
# for循环
list1 = ["a", "b", "c", "d", "e"]
for item in list1:
print(item)
for index in range(len(list1)):
print(index, list1[index])
for index, item in enumerate(list1):
print(index, item)
# 索引
list1 = [1, 2, 3, 4, 5]
print(list1[2])
print(list1[-2])
print(list1[1:]) # 左闭右开,,不填到边界
# 反转
print(list1[::-1])
print(list1[::2]) # 每隔一个取
print(list1[::-2]) # 每隔一个取并且反转
print(list1[0:3][::-1]) # 部分反转
print(list(reversed(list1)))
list1.reverse()
print(list1)
# 排序
list1 = [1, 4, 6, 2, 3, 5]
print(sorted(list1)) # 返回排序后,不改变本身
print(list1.sort()) # 改变本身,无返回值
print(list1)
# 反向排序
print('反向排序的结果是', sorted(list1, reverse=True))
list1.sort(reverse=True)
print('反向排序的结果是', list1)
# 按照单词长度排序
list2 = ['hellow', 'world', 'i', 'have']
list2.sort(key=len)
print(list2)
# 删除
del list1[0]
print(list1)
list1.remove(2) # remove写的是内容不是索引,删除出现的第一个该内容
print(list1)
list1.pop() # 从最后一个开始删除
print(list1)
list1.pop(0)
print(list1) # 从开头开始删除
list1.clear() # 清除
print(list1)
# 计数
list1 = [1, 1, 2, 3, 4]
print(list1.count(1))
# 找到第一个的位置
print(list1.index(2))
# 总和
print(sum(list1))
# all返回列表内元素布尔值是否都为True,any只要有一个是True
print(all(['', 'a', 1]))
print(any(['', 'a', 1]))
# 列表生成式
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)
# 解包操作
list1 = [1, 2, 3, 4]
print(*list1)
# list of list
list1 = [[1, 2, 3], [3, 4, 5], [5, 6, 7]]
print(len(list1))
print(list1[0])
print(list1[0][0])
total = 0
for num_lists in list1:
for num_list in num_lists:
total += num_list
print('the total of list in list is:', total)
# 字符串也可以视作list,可以进行操作,但不可以被重写
# 分割字符串
y = 'The cat sat on the mat'
print(y.split(' '))
z = '12:30:45'
print(z.split(':'))
# 文件与list
# 逐行读取
with open('myfile', 'w') as file:
file.write('Line 1: Some content\n')
file.write('Line 2: ...\n')
file.write('Line 3: Last line')
with open('myfile', 'r') as file:
content = file.readlines()
print(content)
# 逐行写入
lines = ['Line 1: The cat\n', 'Line 2: sat on\n', 'Line 3:', ' the mat'] # 注意加上换行符
with open('myfile', 'w') as file:
file.writelines(lines)
# Open the file to see the result
with open('myfile', 'r') as file:
content = file.readlines()
for line in content: # for循环迭代每一行
print(line)
# tuple元组(定义之后不可修改)
# 定义
tuple1 = tuple([1, 2])
tuple2 = tuple("abcd")
print(tuple1, tuple2)
tuple1 = (1, 2, 3)
tuple2 = 1, 2, 3, 4 # 简写版定义方式
print(tuple1, tuple2)
# 可以进行和list相同的操作
# set集合(无序不重复)
# 创建集合(使用{}或者set()函数,但{}是空字典)
set1 = set()
set1 = {1, 2, 3, 4}
set2 = {1, 2, 3, 4, 5, 6, 7, 8}
set3 = set('abcd')
# 运算
print(1 in set1) # in
print(set2 - set1) # 2有1没有
print(set2 | set1) # 并集
print(set1 & set2) # 交集
# 长度
print(len(set1))
# 添加
set1.add(5)
print(set1)
# 删除(如果不存在,remove会异常,discard不会)
set1.remove(1) # 特定
set1.discard(2) # 特定
set1.pop() # 左侧
print(set1)
set1.clear() # 清除所有
print(set1)
# 求交集
set1 = {1, 2}
set2 = {1, 2, 3}
print(set1.intersection(set2)) # 不改变自身
set1.intersection_update(set2) # 会改变自身
print(set1)
# 应用:无序不重复
# 判断一个字符串有无重复元素
str1 = "abbbcde"
if len(str1) == len(set(str1)):
print("no replicated")
else:
print("yes")
# dict字典
# 定义
dict1 = {} # 空字典
dict1 = {1: 2}
dict2 = {
1: 'a',
"3": 100,
(1, 3): [1, 2, 3, 4]
}
print(dict2)
'''
key value
key=数字,字符串,tuple
value:任意
'''
# 索引
print(dict2['3'])
# 删除
del dict2['3']
print(dict2)
# 求长度
print(len(dict2))
# 求所有keys
print(dict2.keys())
# 求values
print(dict2.values())
# 求items(key,value)
print(dict2.items())
# 列出key values的循环语句
for key in dict2.keys():
value = dict2[key]
print(key, '======', value)
for key, value in dict2.items():
print(key, '+++++', value)
# 应用:统计出现次数
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
results = {}
for item in numbers:
if item in results:
results[item] = results[item] + 1
else:
results[item] = 1
print(results)
# 使用count的方法(重复遍历,复杂度更高)
counter = {}
for num in numbers:
counter[num] = numbers.count(num)
print(counter)
# 使用Counter
from collections import Counter
counter = Counter(numbers)
print(counter)
# 找到出现最多的元素
max_value = max(counter.values())
for k, v in counter.items():
if v == max_value:
print(k, v)
# defaultdict:对于不存在的key,返回一个默认值0/空,同时在字典里添加
from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(list)
dict3 = defaultdict(str)
print(dict1[1], dict2[1], dict3[1])
# 排序输出
numbers = [6, 6, 6, 6, 1, 1, 1, 1, 2, 2, 3, 3, 3]
counter = defaultdict(int)
for num in numbers:
counter[num] = counter[num] + 1
max_value = max(counter.values())
for k in sorted(counter.keys()): # sorted:排序
v = counter[k]
if v == max_value:
print(k, v)
# 例题
text = ['hello world', 'I love you', 'hello hamadi', 'yes ok']
'''
这是一个list
要输出:按照单词出现次数从大到小排序,出现次数相同的,按单词长度从大到小排序
'''
from collections import defaultdict
counter = defaultdict(list)
for words in text:
for word in words.split(): # 按空格分割
counter[len(word)].append(word)
print(counter)
# 至此完成长度归类
# 类型转换
x = [1, 1, 1, 2, 3, 4, 5]
print(tuple(x))
print(set(x))
x = {1, 2, 3}
print(list(x))
print(tuple(x))
x = (1, 2, 3)
print(list(x))
print(set(x))
scores = {
'Alice': 0,
'Bob': 1,
'Eve': 2,
'Mallory': 3,
}
# Using the list() function will yield only keys
print(list(scores))
# Using the list() function on .items will yield the tuples
print(list(scores.items()))
# A list of tuples can also be converted to a dictionary
scores = [(1, 'A'), (2, 'B')]
scores_dict = dict(scores)
print(type(scores))
print(type(scores_dict))
print(scores_dict)
【Python3学习笔记】week2.数据结构
最新推荐文章于 2024-08-09 19:02:56 发布
本文详细介绍了Python中四种重要的数据结构——列表、元组、集合和字典的定义、操作及应用场景。通过实例演示了它们的基本用法,包括增删改查、排序、计数、查找、转换等操作,并展示了如何在实际问题中灵活运用这些数据结构。此外,还讲解了如何利用它们进行数据统计、文件处理和字符串操作。
摘要由CSDN通过智能技术生成