python threeday

本文深入探讨Python中的数据结构,包括字符串、列表、元组、集合和字典的使用方法,以及函数的参数设置与匿名函数的应用。涵盖数据结构的基本操作、字符串处理技巧和函数的灵活使用。
  • 函数的参数
    函数的参数可以有默认值(带默认值的参数一定要统一放在最后),也支持使用可变参数,传递参数时可以不按照设定的顺序进行传递,所以Python不需要像其他语言一样支持函数的重载,因为在定义一个函数的时候可以让它有多种不同的使用方式。

字符串和常用数据结构

  • 使用字符串
    字符串就是由零个或多个字符组成的有限序列
#1. 通过len函数计算字符串的长度
def main():
    a1 = 'hello world!'
    print(len(a1))
main()
运行结果:
	12

#2.获得字符串首字母大写的输出
def main():
	a1 = 'hello world!'
	print(a1.capitalize())
main()
运行结果:
	 Hello world!

#3. 获得字符串变大写后的输出
def main():
    a1 = 'hello world!'
    print(a1.upper())  
 main()
运行结果:
	 HELLO WORLD!

#4.从字符串中查找子串所在位置
def main():
	a1 = 'hello world!'
	print(a1.find('or')) 
main()
运行结果:
	8

#5.检查字符串是否以指定的字符串开头
def main():
	a1 = 'hello world!'
	print(a1.startswith('He')) 
main()	
运行结果:
	False

#6.检查字符串是否以指定的字符串结尾
def main():
	a1 = 'hello world!'
	print(a1.endswith('!')
main()	 
运行结果:
	True

#7.将字符串以指定的宽度居中并在两侧填充指定的字符
def main():
	a1 = 'hello world!'
 	print(a1.center(50, '*'))
main()		 
运行结果:
*******************hello world!*******************

#8.将字符串以指定的宽度靠右放置左侧填充指定的字符
def main():
	a1 = 'hello world!'
	print(a1.rjust(50, ' '))
main()
                                      
#9. 从字符串中取出指定位置的字符(下标运算)
def main():
	a2 = 'abc123456'
	print(a2[2])
main()

#10.检查字符串是否由数字构成
def main():
	a2 = 'abc123456'
	print(a2.isdigit())
main()
运行结果:
	False

#11.检查字符串是否以字母构成
def main():
	a2 = 'abc123456'
	print(a2.isalnum())
main()


#12.获得字符串修剪左右两侧空格的拷贝
def main():
	a3 = '    baibailu@112.com '
	print(a3.strip())   
	print(a3.lstrip())   
	print(a3.rstrip())   
main()

除了字符串,Python还内置了多种类型的数据结构,如果要在程序中保存和操作数据,绝大多数时候可以利用现有的数据结构来实现,最常用的包括列表、元组、集合和字典。

  • 使用列表
#1.计算列表长度(元素个数)
    d

计算列表长度(元素个数)
def main():
    list1 = [2, 4, 5, 7, 78]
    print(len(list1))
main()
运行结果:
   5

#2.下标(索引)运算
def main():
   list1 = [2, 4, 5, 7, 78]
   print(list1[4])
main()
运行结果:
   78

#3.添加元素
def main():
   list1 = [2, 4, 5, 7, 78]
   list1.append(100)
   list1.insert(1, 400)
   list1 += [101, 202]
   print(list1)
main()
运行结果:
   [2, 400, 4, 5, 7, 78, 100, 101, 202]

#4.删除元素
def main():
   list1 = [2, 4, 5, 7, 78]
   list1.remove(4)
   print(list1)
main()
运行结果:
   [2, 5, 7, 78]

#5.清空列表元素
def main():
   	list1 = [2, 4, 5, 7, 78]
  	list1.clear()
   	print(list1)
main()
运行结果:
   []
#6.去重
a = [1,1,2,3,1,4,5,3,1,6,6]
b = []
for i in a:
   if i not in b:
      b.append(i)
print(b)
运行结果:
   [1, 2, 3, 4, 5, 6]

和字符串一样,列表也可以做切片操作,通过切片操作可以实现对列表的复制或将列表中的一部分取出来创建出新的列表

#1. 循环遍历列表元素
def main():
    fruits = ['grape', 'apple', 'strawberry', 'waxberry']
	fruits += [''pear', 'mango']
    for fruit in fruits:
        print(fruit.title(), end=' ')
    print()
运行结果:
Grape Apple Strawberry Waxberry  Pear Mango

#2.列表切片
def main():
    fruits = ['grape', 'apple', 'strawberry', 'waxberry']
    fruits1 = fruits[1:2]
    print(fruits1)
main()
运行结果:
	['apple']

#3.可以通过反向切片操作来获得倒转后的列表的输出
def main():
    fruits = ['grape', 'apple', 'strawberry', 'waxberry']
    fruits2 = fruits[::-1]
    print(fruits2)
main()
运行结果:
	['waxberry', 'strawberry', 'apple', 'grape']

当你要在其他py文件中引用本文件中的任何东西,如果你不想在其他文件中运行该文件中的某些代码,就可以使用“if name == ‘main’:”

  • 使用元组
    元组与列表类似,不同之处在于元组的元素不能修改,把多个元素组合到一起就形成了一个元组,所以它和列表一样可以保存多条数据。
#1.获取元组中的元素
def main():
# 定义元组
    t = ('wd', 38, True, 'shanghai')
    print(t)
    print(t[1])
main()
运行结果:
	38


#2.重新给元组赋值
def main():
   	t = ('lulu', 38, True, 'shanghai')
    t[0] 


#3.将列表转换成元组
def main():
    fruits_list = ['apple', 'banana', 'orange']
    fruits_tuple = tuple(fruits_list)
    print(fruits_tuple)
main()
运行结果:
 ('apple', 'banana', 'orange')    

1.如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组
2.如果一个方法要返回多个值,可以使用元组
3.元组在创建时间和占用的空间上面都优于列表

  • 使用集合

与列表和元组不同,集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的。
一般情况下集合常用的两个场景是:

  • 去重(如:列表去重);
  • 关系测试(如:取交集、取并集、取差集等)
  • 使用字典
    字典是另一种可变容器模型,可以存储任意类型对象,与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
    字典是无序的,没有索引操作,除非转换成有序字典。
  • dict = {key:value}
#1.通过键可以获取字典中对应的值
def main():
    scores = {'ww': 95, 'wx': 78, 'xx': 82}
    print(scores['ww'])
main()
运行结果:
 95

#2. 对字典进行遍历(遍历的其实是键再通过键取对应的值)
def main():
    scores = {'ww': 95, 'wx': 78, 'xx': 82}
    for i in scores:
        print('%s\t--->\t%d' % (rong, scores[i]))
main()
运行结果:
 ww    --->    95
 wx    --->    78
 xx    --->    82

#3.更新字典中的元素
def main():
    scores = {'ww': 95, 'wd': 78, 'hy': 82}
    scores['wd'] = 65
    print(scores)
main()
运行结果:
 {'ww': 95, 'wd': 65, 'hy': 82}


#4. get方法也是通过键获取对应的值但是可以设置默认值


#5.删除字典中的元素
def main():
    scores = {'wd': 95, 'ww': 78, 'xx': 79}
    pop_obj = scores.pop('wd')
    print(pop_obj)
main()
 
 
#6.清空字典
def main():
    scores = {'wd': 95, 'ww: 78, 'xx': 79}
    scores.clear()
    print(scores)
main()
  • 匿名函数
    (lambda x,y:print(x,y))(100,10)
    关键字lambda表示匿名函数,冒号前面的表示函数参数。
    匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
    用匿名函数有个好处,因为函数没有名字,不用担心函数名冲突。匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。
考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
### 实现Switch Case功能的方法 尽管Python本身并没有内置的`switch-case`结构,但可以通过多种方式模拟其行为。以下是几种常见的方法: #### 方法一:使用字典映射 通过创建一个字典来存储键值对,其中键表示条件,而值则是对应的函数或返回值。 ```python def get_day_name(day_index): switcher = { 0: "Sunday", 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4: "Thursday", 5: "Friday", 6: "Saturday" } return switcher.get(day_index, "Invalid day") # 默认处理未知情况 print(get_day_name(1)) # 输出 Monday print(get_day_name(7)) # 输出 Invalid day ``` 这种方法利用了字典的高效查找特性[^1]。 #### 方法二:结合Lambda表达式 如果某些情况下需要执行简单的操作而不是仅仅返回固定值,则可以将这些操作定义为lambda函数并存入字典中。 ```python def execute_command(command_id): commands = { 'start': lambda: print("Starting..."), 'stop': lambda: print("Stopping...") } action = commands.get(command_id, lambda: print("Unknown command")) action() execute_command('start') # 输出 Starting... execute_command('pause') # 输出 Unknown command ``` 此法同样基于字典的概念,不过增加了灵活性以适应更复杂的场景需求。 #### 方法三:类封装的方式 对于更加复杂的应用场景或者当多个属性关联在一起的时候考虑采用面向对象的设计模式——即把每一个case看作是一个单独的对象实例化出来,并且让它们共享相同接口。 ```python class SwitchCase: def __init__(self, func=None): self.func = func def __call__(self,*args,**kwargs): if self.func is not None: return self.func(*args,**kwargs) def case_one(): return "This is case one" def default_case(): return "Default case triggered." cases = {'one': SwitchCase(case_one), 'two': SwitchCase(lambda : "Anonymous function as case two"), '_default_': SwitchCase(default_case)} selected_key='three' result=cases.get(selected_key,cases['_default_'])() print(result) # Default case triggered. ``` 上述例子展示了如何构建可扩展性强以及易于维护的选择器系统。 关于日志记录方面,在大型项目里推荐遵循特定策略以便更好地管理和配置logging模块;这包括但不限于集中设置log level、formatting style等参数从而减少重复劳动提高一致性[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值