珠海手机网站wordpress主题 路径

张小明 2026/1/12 7:15:19
珠海手机网站,wordpress主题 路径,怎么开发公众号平台,东台市建设局网站迭代器一、内置类型转换为迭代器1. 列表 (List) → 迭代器2. 元组 (Tuple) → 迭代器3. 字典 (Dict) → 迭代器4. 字符串 (String) → 迭代器5. 集合 (Set) → 迭代器转换为迭代器的不同方法对比完整示例#xff1a;各种数据类型的迭代实际应用#xff1a;数据处理场景1…迭代器一、内置类型转换为迭代器1. 列表 (List) → 迭代器2. 元组 (Tuple) → 迭代器3. 字典 (Dict) → 迭代器4. 字符串 (String) → 迭代器5. 集合 (Set) → 迭代器转换为迭代器的不同方法对比完整示例各种数据类型的迭代实际应用数据处理场景1批量处理数据场景2链式迭代多个数据集场景3创建自定义迭代器重要注意事项二、直接定义迭代器的3种方法方法1使用 生成器函数最常用方法2使用 生成器表达式简洁版方法3创建 迭代器类最灵活三、迭代器的内存优势对比列表 vs 生成器四、高级迭代器技巧1. itertools 模块标准库中的迭代器工具2. yield from 语法五、如何选择合适的迭代器定义方式六、总结Python 中不仅可以转换基本类型为迭代器还可以直接定义自定义的迭代器。 这是 Python 非常强大的特性。一、内置类型转换为迭代器1. 列表 (List) → 迭代器my_list[1,2,3,4,5]list_iteriter(my_list)print(next(list_iter))# 输出: 1print(next(list_iter))# 输出: 2print(next(list_iter))# 输出: 3# 也可以用 for 循环foriteminlist_iter:# 从第4个元素开始print(item)# 输出: 4, 52. 元组 (Tuple) → 迭代器my_tuple(apple,banana,cherry)tuple_iteriter(my_tuple)print(next(tuple_iter))# appleprint(next(tuple_iter))# banana# 转换为列表查看剩余print(list(tuple_iter))# [cherry]3. 字典 (Dict) → 迭代器字典有多种迭代方式my_dict{name:Alice,age:25,city:Beijing}# 方法1默认迭代键keysdict_iter_keysiter(my_dict)print(next(dict_iter_keys))# namePython 3.7 保持插入顺序print(next(dict_iter_keys))# age# 方法2明确迭代键dict_iteriter(my_dict.keys())print(next(dict_iter))# name# 方法3迭代值dict_iter_valuesiter(my_dict.values())print(next(dict_iter_values))# Alice# 方法4迭代键值对dict_iter_itemsiter(my_dict.items())print(next(dict_iter_items))# (name, Alice)4. 字符串 (String) → 迭代器字符串也可以迭代my_stringHellostr_iteriter(my_string)print(next(str_iter))# Hprint(next(str_iter))# eprint(.join(str_iter))# llo5. 集合 (Set) → 迭代器my_set{1,3,5,7,9}set_iteriter(my_set)print(next(set_iter))# 1集合无序顺序不确定print(next(set_iter))# 3转换为迭代器的不同方法对比数据类型创建迭代器方法迭代内容示例列表iter(lst)列表元素[1, 2, 3]→1, 2, 3元组iter(tup)元组元素(a, b)→a, b字典iter(dict)字典的键{a:1}→a字典键iter(dict.keys())字典的键{a:1}→a字典值iter(dict.values())字典的值{a:1}→1字典项iter(dict.items())(键, 值)对{a:1}→(a, 1)字符串iter(string)单个字符hi→h, i集合iter(set)集合元素{1, 2}→1, 2顺序不定完整示例各种数据类型的迭代# 定义各种数据结构my_list[10,20,30]my_tuple(x,y,z)my_dict{a:1,b:2,c:3}my_stringPythonmy_set{100,200,300}defiterate_data(data,data_type):通用迭代函数print(f\n迭代{data_type}:)iteratoriter(data)try:foriinrange(5):# 最多尝试5次print(f 第{i1}次next():{next(iterator)})exceptStopIteration:print( 迭代结束)# 测试各种类型iterate_data(my_list,列表)iterate_data(my_tuple,元组)iterate_data(my_dict,字典默认迭代键)iterate_data(my_dict.values(),字典的值)iterate_data(my_string,字符串)iterate_data(my_set,集合)实际应用数据处理场景1批量处理数据# 有一个数据列表需要分批处理data_listlist(range(100))# 0-99data_iteriter(data_list)batch_size10batch_num0whileTrue:batch[]try:for_inrange(batch_size):batch.append(next(data_iter))exceptStopIteration:ifbatch:# 处理最后一批print(f批次{batch_num}:{batch})breakprint(f批次{batch_num}:{batch})batch_num1场景2链式迭代多个数据集# 合并多个数据源的迭代器defchain_iterators(*iterables):链式迭代多个可迭代对象foriterableiniterables:yieldfromiterable# 使用list_data[1,2,3]tuple_data(4,5,6)dict_keys{a:1,b:2}.keys()combined_iterchain_iterators(list_data,tuple_data,dict_keys)print(list(combined_iter))# [1, 2, 3, 4, 5, 6, a, b]场景3创建自定义迭代器classDataLoader:模拟PyTorch DataLoader的简单版本def__init__(self,data,batch_size2):self.datadata self.batch_sizebatch_sizedef__iter__(self):self.index0returnselfdef__next__(self):ifself.indexlen(self.data):raiseStopIteration batchself.data[self.index:self.indexself.batch_size]self.indexself.batch_sizereturnbatch# 使用自定义迭代器loaderDataLoader([1,2,3,4,5,6],batch_size2)forbatchinloader:print(f批次:{batch})# 输出:# 批次: [1, 2]# 批次: [3, 4]# 批次: [5, 6]重要注意事项迭代器只能前进不能后退data[1,2,3,4]ititer(data)print(next(it))# 1print(next(it))# 2# 无法回到1迭代器会消耗数据ititer([1,2,3])list(it)# [1, 2, 3]list(it)# []已经耗尽可迭代对象 vs 迭代器lst[1,2,3]# 可迭代对象ititer(lst)# 迭代器# 可迭代对象可以多次创建迭代器it1iter(lst)it2iter(lst)判断是否为迭代器fromcollections.abcimportIterator lst[1,2,3]ititer(lst)print(isinstance(lst,Iterator))# Falseprint(isinstance(it,Iterator))# True二、直接定义迭代器的3种方法方法1使用 生成器函数最常用defmy_generator(start,end):生成从 start 到 end 的整数currentstartwhilecurrentend:yieldcurrent# yield 是关键current1# 使用genmy_generator(1,5)# 这已经是一个迭代器print(type(gen))# class generatorprint(next(gen))# 1print(next(gen))# 2print(list(gen))# [3, 4, 5]剩余的部分方法2使用 生成器表达式简洁版# 类似列表推导式但用圆括号gen_expr(x**2forxinrange(5))# 生成器表达式print(type(gen_expr))# class generatorprint(next(gen_expr))# 0print(next(gen_expr))# 1print(list(gen_expr))# [4, 9, 16]方法3创建 迭代器类最灵活classMyIterator:自定义迭代器类def__init__(self,start,end):self.currentstart self.endenddef__iter__(self):返回迭代器自身returnselfdef__next__(self):返回下一个值ifself.currentself.end:raiseStopIterationelse:valueself.current self.current1returnvalue# 使用my_iterMyIterator(1,3)print(type(my_iter))# class __main__.MyIteratorprint(next(my_iter))# 1print(next(my_iter))# 2print(next(my_iter))# 3print(next(my_iter))# 抛出 StopIteration三、迭代器的内存优势对比列表 vs 生成器importsys# 方法1使用列表占用大量内存defget_numbers_list(n):返回包含前n个数字的列表numbers[]foriinrange(n):numbers.append(i)returnnumbers# 方法2使用生成器节省内存defget_numbers_generator(n):生成前n个数字foriinrange(n):yieldi# 对比内存使用n1000000# 列表一次性在内存中创建所有元素list_numbersget_numbers_list(n)print(f列表占用内存:{sys.getsizeof(list_numbers)}字节)# 约 8MB# 生成器一次只生成一个元素gen_numbersget_numbers_generator(n)print(f生成器占用内存:{sys.getsizeof(gen_numbers)}字节)# 约 100 字节# 但只能使用一次print(sum(gen_numbers))# 正常工作print(sum(gen_numbers))# 0生成器已耗尽四、高级迭代器技巧1.itertools模块标准库中的迭代器工具importitertools# 无限迭代器counteritertools.count(start10,step2)print(next(counter))# 10print(next(counter))# 12print(next(counter))# 14# 循环迭代器cycle_iteritertools.cycle([A,B,C])print(next(cycle_iter))# Aprint(next(cycle_iter))# Bprint(next(cycle_iter))# Cprint(next(cycle_iter))# A又回到开头# 排列组合permutationsitertools.permutations([1,2,3],2)print(list(permutations))# [(1,2), (1,3), (2,1), (2,3), (3,1), (3,2)]2.yield from语法defchain_generators(*iterables):连接多个生成器foritiniterables:yieldfromit# 委托给子生成器# 使用resultchain_generators([1,2,3],(4,5,6),{7,8,9})print(list(result))# [1, 2, 3, 4, 5, 6, 8, 9, 7]集合顺序不确定五、如何选择合适的迭代器定义方式场景推荐方式示例简单序列生成生成器表达式(x**2 for x in range(10))复杂数据生成生成器函数def read_file(): yield line需要状态维护迭代器类class DataLoader:需要重复杂用可迭代对象实现__iter__()返回新迭代器组合现有迭代器itertools模块itertools.chain()六、总结Python 可以直接定义迭代器而不仅限于转换基本类型三种主要方法生成器函数yield关键字生成器表达式圆括号推导式迭代器类实现__iter__和__next__在深度学习中自定义迭代器非常有用可以实现自定义 DataLoader处理流式数据节省内存特别是处理大数据时实现复杂的数据预处理流所有可迭代对象都可以用iter()转换为迭代器列表、元组迭代元素字典默认迭代键也可用.values()、.items()迭代值和键值对字符串迭代字符集合迭代元素顺序不确定迭代器是单向的、消耗性的使用next()逐个获取元素
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

河南住房与城乡建设厅网站网络维护图片

kUI提供了很多布局组件,其中Tabs选项卡组件可以用于快速搭建鸿蒙APP框架,本文通过案例研究Tabs构建鸿蒙原生应用框架的方法和步骤。一、效果展示1、效果展示1整个APP外层Tabs包含4个选项卡:首页、发现、消息、我的。在首页中,上滑…

张小明 2026/1/7 21:41:19 网站建设

做果蔬零售的网站响应式网站建设必推全网天下

大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款java小程序项目——校园二手交易平台小程序。项目源码以及远程配置部署相关请联系风歌,文末附上联系信息。项目简介:管理员后端:…

张小明 2026/1/7 20:03:33 网站建设

大学 网站开发 专业电商设计公司官网

企业资产管理(EAM)围绕“让设备在正确的时间、以最低的总成本、发挥最大价值”这一核心目标,把预防性维护计划、工单管理和设备生命周期跟踪三大模块做成闭环。下面用“流程功能落地要点”的结构,把三者的逻辑关系与最佳实践一次讲…

张小明 2026/1/11 2:45:45 网站建设

网站系统怎么做移动云手机网页版

终极指南:如何使用注意力门控网络快速提升医学图像分析准确率 【免费下载链接】Attention-Gated-Networks Use of Attention Gates in a Convolutional Neural Network / Medical Image Classification and Segmentation 项目地址: https://gitcode.com/gh_mirror…

张小明 2026/1/11 15:47:26 网站建设

微信视频网站怎么做的网站接入服务 公司

GPT-SoVITS在教育领域的创新应用探索教育的声音,正在被重新定义 想象这样一个场景:偏远山区的小学生戴上耳机,听到的不是冰冷机械的朗读音,而是千里之外特级教师熟悉而温暖的声音,在讲解《静夜思》时轻柔地停顿、在解释…

张小明 2026/1/7 20:03:37 网站建设

网站建设 金手指排名霸屏精灵网站建设

摘要 随着社会经济的快速发展和人们生活水平的提高,宠物猫逐渐成为现代家庭中的重要成员。宠物猫的认养需求日益增长,传统的线下认养方式存在信息不对称、流程繁琐等问题,亟需一个高效、透明的线上平台来解决这些问题。基于此,开发…

张小明 2026/1/7 20:03:38 网站建设