容器:
# 创建一个列表
my_list = [1, 2, 3, 4, 5]
# 修改列表中的元素
my_list[0] = 10
# 在列表末尾插入一个元素
my_list.append(6)
# 删除列表中的元素
my_list.remove(3)
print(my_list) # 输出:[10, 2, 4, 5, 6]
# 创建一个字典
my_dict = {"name": "Alice", "age": 20, "city": "Beijing"}
# 修改字典中的值
my_dict["age"] = 25
# 插入新的键值对
my_dict["gender"] = "female"
# 删除字典中的键值对
del my_dict["city"]
print(my_dict) # 输出:{"name": "Alice", "age": 25, "gender": "female"}
# 创建一个集合
my_set = {1, 2, 3, 4, 5}
# 添加元素
my_set.add(6)
# 删除元素
my_set.remove(3)
print(my_set) # 输出:{1, 2, 4, 5, 6}
字节数组(Bytearray):字节数组是一个可变的字节序列,可以进行修改、插入和删除操作。
# 创建一个字节数组
my_bytearray = bytearray(b"hello")
# 修改字节数组中的值
my_bytearray[0] = ord("H")
# 在字节数组中插入一个字节
my_bytearray.insert(5, ord("!"))
# 删除字节数组中的一个字节
my_bytearray.remove(ord("o"))
print(my_bytearray) # 输出:bytearray(b'Hello!')
队列(queue)
import queue
q = queue.Queue()
q.put(1) # 插入元素1,队列变为[1]
q.put(2, 1) # 插入元素2,优先级为1,队列变为[1, 2]
q.put(3) # 插入元素3,队列变为[1, 2, 3]
x = q.get() # 删除队头元素1,x的值为1,队列变为[2, 3]
y = q.get() # 删除队头元素2,y的值为2,队列变为[3]
z = q.get() # 删除队头元素3,z的值为3,队列变为空[]
q.empty() # 返回True,因为队列为空
q.qsize() # 返回0,因为队列为空
不可变的数据类型
python这些列表,字典和元组,理论上是没有长度限制的。
但是,实际上,Python中的元组、列表和字典都有长度限制,具体取决于Python解释器的可用内存的大小。
对于元组和列表,它们的长度限制通常是可用内存的大小。如果尝试创建超出可用内存大小的对象,Python解释器将引发MemoryError异常。
对于字典,虽然它们可以容纳任意数量的键值对,但是它们的长度(即键值对的数量)也是有限制的。在Python 3中,字典的最大长度取决于可用内存的大小和系统架构。同样,如果尝试创建超出可用内存大小的字典对象,Python解释器将引发MemoryError异常。
需要注意的是,具体的长度限制可能会因Python解释器的实现而有所不同。因此,建议在编写代码时合理地管理数据结构的大小,以确保程序的效率和稳定性。
无序性:不能知道某一个元素具体在集合中的哪一个位置,所以不能对集合进行切片的操作。
元素的不可重复性:元素是不重复的,即集合中的每个元素只出现一次。可以用于去重.
可以进行数学集合操作,如并集、交集、差集、对称差集和对称交集
“=”是赋值
“==”是判断二者是否相等,相等为True,不相等为False
“+=”
a+=2 等价于 a=a+2
逻辑运算符
“and” 要求严格,只有二者同时为True 才判定为True, 二者有一个False 就是False
“or” 要求松,二者有一个True 就是True, 二者都为False才是False.
"not", not True就是False, not False 就是True
引用:
import copy
c = [1, 2, [3, 4]]
d = c
a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
浅拷贝
copy
模块的copy()
函数来实现浅拷贝。# 创建一个列表
original_list = [1, 2, [3, 4]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
shallow_copy[2][0] = 'a' # 修改浅拷贝的子对象,原始列表也会被修改
print(original_list) # 输出:[1, 2, ['a', 4]]
深拷贝:
copy
模块的deepcopy()
函数来实现深拷贝。# 创建一个列表
original_list = [1, 2, [3, 4]]
# 深拷贝
deep_copy = copy.deepcopy(original_list)
deep_copy[2][0] = 'a' # 修改深拷贝的子对象,原始列表不会受影响
print(original_list) # 输出:[1, 2, [3, 4]]
for i in range(1,101,1):
if i%7==0 and i%5==0:
print(i)
# 35
# 70
for i in range(100,1000,1):
if i == int(str(i)[0])**3+int(str(i)[1])**3+int(str(i)[2])**3:
print(i)
153 370 371 407
for i in range(101,200):
is_prime = True
for j in range(2,i,1):
if i % j == 0:
is_prime = False
break
if is_prime == True:
print(i)
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
n=1
p=1
while True:
p = p*(n)
print("print(n)", end="\t");print(n, end="\t")
print("print(p)", end="\t");print(p)
if p > 20000:
print(n)
break
n+=1
print(n) 1 print(p) 1 print(n) 2 print(p) 2 print(n) 3 print(p) 6 print(n) 4 print(p) 24 print(n) 5 print(p) 120 print(n) 6 print(p) 720 print(n) 7 print(p) 5040 print(n) 8 print(p) 40320 8
import random
ans = random.randint(0,9)
print(ans)
while True:
guess = int(input("请输入你猜的数"))
if guess > ans:
print("bigger")
elif guess < ans:
print("smaller")
else:
print("猜中了,是",ans)
break
def is_palin(i_str):
if i_str==i_str[::-1]:
print("YES")
else:
print("NO")
is_palin("level")
is_palin("noon")
is_palin("right")
YES YES NO
def fall_resil(start=100):
h = start
resil = 1
mile = start
for i in range(1,11,1):
h = h/2
mile += h*2
print("在第10 次落地时, 共经过多少米?\t", mile)
print("第 10 次反弹多高?\t", h)
fall_resil()
在第10 次落地时, 共经过多少米? 299.8046875 第 10 次反弹多高? 0.09765625
# *
# * *
# * * *
# * * * *
# * * * * *
# * * * *
# * * *
# * *
# *
i = 1
while True:
if i < 6:
print("* "*i)
else:
break
i+=1
i = 4
while True:
if i >= 1:
print("* "*i)
else:
break
i-=1
year = int(input("year: "))
month = int(input("month:"))
day = int(input("day:"))
m_dict = {1:31,3:31,4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
# (1)能被4整除且不能被100整除(如2004年是闰年,而1900年不是)
# (2)能被400整除(如2000年是闰年)
if (year%4==0 and year%100!=0) or (year % 400 == 0):
m_dict[2] = 29
else:
m_dict[2] = 28
total_day = 0
for m in range(1,month,1):
total_day += m_dict[m]
total_day += day
print("这⼀天是这⼀年的第%s天"%(total_day))
year: 2023 month:10 day:7 这⼀天是这⼀年的第280天
(1).查看一下列表的长度
(2).实现列表的增(增加一个元素)、删(删除第二个元素)、改(修改第一个
元素)、查(查询第一个元素)
nameList = [1,2,3,4,5,6]
nameList.append(7); print(nameList)
nameList.extend([11,22]);print(nameList)
nameList.remove(1);print(nameList)
nameList[2]=99999;print(nameList)
nameList.index(5)
[1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7, 11, 22] [2, 3, 4, 5, 6, 7, 11, 22] [2, 3, 99999, 5, 6, 7, 11, 22] 3
s1 = "飘飘乎如遗世独立,羽化而登仙乎"
s_dict = {}
for i in s1:
if i not in s_dict.keys():
s_dict[i] = 1
else:
s_dict[i] += 1
print(s_dict);print("\n\n")
import operator;
# s_dict.items() 是把字典中的键值对取出,
# dict_items([('飘', 2), ('乎', 2), ('如', 1), ('遗', 1), ('世', 1), ('独', 1), ('立', 1), (',', 1), ('羽', 1), ('化', 1), ('而', 1), ('登', 1), ('仙', 1)])
print(sorted(s_dict.items(),key=operator.itemgetter(1),reverse=True))
# sorted函数第一个元素表示被排序的数据
# operator.itemgetter(1)表示获取每个元组的第二个元素作为排序依据。
# 具体来说,operator.itemgetter(1)是一个函数,它接受一个可迭代对象作为输入,并返回一个新的迭代器。这个迭代器产生原始可迭代对象的第二个元素。
print(dict(sorted(s_dict.items(),key=operator.itemgetter(1),reverse=True)));print("\n\n")
print(sorted(s_dict.items(),key=operator.itemgetter(1),reverse=True)[0:2])
{'飘': 2, '乎': 2, '如': 1, '遗': 1, '世': 1, '独': 1, '立': 1, ',': 1, '羽': 1, '化': 1, '而': 1, '登': 1, '仙': 1}
[('飘', 2), ('乎', 2), ('如', 1), ('遗', 1), ('世', 1), ('独', 1), ('立', 1), (',', 1), ('羽', 1), ('化', 1), ('而', 1), ('登', 1), ('仙', 1)]
{'飘': 2, '乎': 2, '如': 1, '遗': 1, '世': 1, '独': 1, '立': 1, ',': 1, '羽': 1, '化': 1, '而': 1, '登': 1, '仙': 1}
[('飘', 2), ('乎', 2)]