变量
python
#变量定义
name="name"
age=18
height=1.75
#多个变量赋值
a=b=c=1
print(a,b,c)
字符串
python
#字符串定义及输出
str1="hello"
str2='world'
print(str1,str2)
#字符串格式化输出
print("name:%s,age:%d,height:%.2f"%(name,age,height))
#字符串拼接
str3=str1+str2
print(str3)
#字符串长度
print(len(str3))
#字符串截取
print(str3[0:5])
#字符串查找
print(str3.find("hello"))
#字符串替换
print(str3.replace("hello","hi"))
#字符串分割
print(str3.split("l"))
#字符串大小写转换
print(str3.upper())
print(str3.lower())
#字符串去除空格
print(str3.strip())
列表
python
#列表定义及输出
list1=[1,2,3,4,5]
print(list1)
#列表添加元素
list1.append(6)
print(list1)
#列表插入元素
list1.insert(6,0)
print(list1)
#列表删除元素
list1.remove(1)
#del list1[0]
print(list1)
#列表排序
list1.sort()
print(list1)
#列表找最大值,最小值
print(max(list1))
print(min(list1))
#列表反转
list1.reverse()
print(list1)
#列表长度
print(len(list1))
#列表截取
print(list1[0:3])
#列表查找
print(list1.index(3))
#列表统计
print(list1.count(3))
#列表合并
list2=[6,7,8,9,10]
list1.extend(list2)
print(list1)
#列表删除
del list1[0]
print(list1)
#列表清空
list1.clear()
print(list1)
#列表复制
list1=[1,2,3,4,5]
list2=list1.copy()
print(list2)
#列表遍历
for i in list1:
print(i)
#列表嵌套
list1=[1,2,3,4,5]
list2=[6,7,8,9,10]
list3=[list1,list2]
print(list3)
#列表切片
print(list1[0:3])
#列表切片步长
print(list1[0:3:2])
#若步长为负数则从后往前开始遍历列表,若步长为正数则从前往后开始遍历列表
print(list1[3:0:1])#输出空列表
print(list1[0:3:-1])#输出空列表
#列表切片步长负数
print(list1[3:0:-1])
#列表切片步长负数
print(list1[3::-1])
#列表切片步长负数
print(list1[::-1])
#列表切片步长负数
print(list1[::-2])
#列表切片步长负数
print(list1[3:0:-2])
#列表切片步长负数
print(list1[3::-2])
#列表切片步长负数
print(list1[::-2])
字典
python
#字典的定义
dict = {'Alice':'2341', 'Beth':'9102', 'Cecil':'3258'}
print(dict)
#字典的访问
print(dict['Alice'])
#字典的添加
dict['David'] = '9527'
print(dict)
#字典的删除
del dict['Alice']
print(dict)
#字典的遍历
for key in dict:
print(key,dict[key])
#字典的长度
print(len(dict))
#字典的排序
print(sorted(dict))
#字典的清空
dict.clear()
print(dict)
#字典的复制
dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict2 = dict1.copy()
print(dict2)
#字典的合并
dict3 = {'David': '9527', 'Eric': '3258'}
dict1.update(dict3)
print(dict1)
#字典的键值对
print(dict1.items())
#字典的键
print(dict1.keys())
#字典的值
print(dict1.values())
#字典的查找
print(dict1.get('Alice'))
#字典的查找
print(dict1['Alice'])
#字典的查找
print(dict1.setdefault('Alice'))
集合
python
#集合的使用
#集合的定义
s = set([1,2,3])
print(s)
#集合的添加和删除
#add添加一个元素,update添加多个元素(可以添加列表,元组,字典)
s.add(4)
s.update([5,6,7])
print(s)
#remove删除一个指定元素;discard删除一个指定元素,如果元素不存在不会报错
s.remove(4)
s.discard(5)
print(s)
#pop随机删除一个元素
s.pop()
print(s)
#clear清空集合
s.clear()
print(s)
#集合的遍历
s = set([1,2,3])
for i in s:
print(i)
#集合的运算
#集合的并集
s1 = set([1,2,3])
s2 = set([2,3,4])
print(s1.union(s2))
#集合的交集
print(s1.intersection(s2))
#集合的差集
#差集:在s1中但不在s2中的元素的集合
print(s1.difference(s2))
#集合的对称差集
#对称差集:两个集合中不重复的元素的集合
print(s1.symmetric_difference(s2))
#集合的子集和超集
#issubset判断是否为子集,issuperset判断是否为超集
print(s1.issubset(s2))
print(s1.issuperset(s2))
#集合的长度
print(len(s))
#集合的最大值和最小值
print(max(s))
print(min(s))
#集合的判断
print(1 in s)
print(1 not in s)
关于输出空格以及换行的做法,以输出九九乘法表为例。(python中输出变量时用逗号分隔,自动生成空格,换行写输出语句时输出的结果也自动换行)
python
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d"%(i,j,i*j),end=" ")
print()
for循环
python
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#for循环遍历的两种写法
#第一种
list = [1,2,3,4,5]
for i in range(len(list)):
print(list[i])
#第二种
for i in list:
print(i)
#字符串也类似
for i in 'hello':
print(i)
for i in range(len('hello')):
print('hello'[i])
#列表生成式
list = [x*x for x in range(1,11)]
print(list)
#带条件的列表生成式
list = [x*x for x in range(1,11) if x%2==0]
print(list)
#字典的遍历
dic = {'a':1,'b':2,'c':3}
for i in dic:
print(i)
for i in dic.values():
print(i)
for i in dic.items():
print(i)
for i,j in dic.items():
print(i,j)
#for...else
# 当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容
for i in range(1,11):
print(i)
else:
print('end')
pass语句是用于当你想定义一个空函数用于占位,否则直接定义一个空函数会报错
python
def function():
pass
迭代器与生成器
python
import sys
list=[1,2,3,4]
it = iter(list)
for x in it:
print(x, end=" ")
#迭代器对象可以使用常规for语句进行遍历
#迭代器使用函数next()
list1=[1,2,3,4]
it=iter(list1)
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
python
#StopIteration异常用于标识迭代的完成,防止出现无限循环的情况,在__next__()方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代
class MyNumbers:
def __iter__(self):
self.a=1
return self
def __next__(self):
if self.a<=20:
x=self.a
self.a+=1
return x
else:
raise StopIteration
myclass=MyNumbers()
myiter=iter(myclass)
for x in myiter:
print(x)
python
import sys
#生成器
#在 Python 中,使用了 yield 的函数被称为生成器(generator)
#生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
#在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
#调用一个生成器函数,返回的是一个迭代器对象
def countdown(n):
while n > 0:
yield n
n -= 1
# 创建生成器对象
generator = countdown(5)
# 通过迭代生成器获取值
print(next(generator)) # 输出: 5
print(next(generator)) # 输出: 4
print(next(generator)) # 输出: 3
# 使用 for 循环迭代生成器
for value in generator:
print(value) # 输出: 2 1
#使用yield实现斐波那契数列
def fibonacci(n):
a,b,count=0,1,0
while True:
if (count>n):
return
count+=1
yield a
a,b=b,a+b
f=fibonacci(10)
while True:
try:
print(next(f),end=" ")
except StopIteration:
sys.exit()
关于斐波那契数列的具体实现算法如下:
python
a b
0 1
1 1
1 2
2 3
3 5
5 8
8 13
···
最后返回的是a的值,一种动态规划的思想,用b作中间变量存储下一次应该返回的值
lambda函数
python
#lambda函数通常与内置函数一起使用,如map()、filter()、reduce()等。对集合进行操作
nums=[1,2,3,4,5,6,7,8,9,10]
#map函数用于对集合中的每个元素进行操作
res=map(lambda x:x*2,nums)
print(list(res))
#filter函数用于对集合中的每个元素进行筛选
res=filter(lambda x:x%2==0,nums)
print(list(res))
#reduce函数用于对集合中的每个元素进行累积操作
from functools import reduce
res=reduce(lambda x,y:x+y,nums)
print(res)