Python Collections 模块 - 2 Tuple功能详解_pytorch中to_2tuple-程序员宅基地

技术标签: Python高级编程  

1. 迭代

# -*- coding: utf-8 -*-
__autor__ = "TOM"

name_list = ["Tom1","Tom2"]   # 常用for循环遍历list
for name in name_list:
    print(name)

name_tuple = ("Tom3","Tom4")   # tuple也可以遍历;
for name in name_tuple:        # for循环会拿到tuple/list的迭代器,所有iterable对象都可以迭代
    print(name)               # 内部实现了__iter__/__getitem__魔法函数,实现迭代。

2. 拆包

name_tuple = ("Tom3","Tom4")
name_tuple = ("Tom1","Tom2")   # 这样操作合理,python变量仅仅是一个符号,多有动态语言都支持该操作
user_tuple = ("Tom1",29,175)
name,age,height = user_tuple    # 把元祖里面拆包为三个变量,将三个位置信息,分别赋值给三个变量,此即为元祖离目的拆包的用法
                                # 隐含的位置对应关系。
# 如果没有拆包,则用以下写法,位置信息不明显
# name = user_tuple[0]
# age = user_tuple[1]
# height = user_tuple[2]
name, *other = user_tuple      # 只提取第一个位置,其它位置信息不care,统一放在一个数组中。
print(name,age,height)
print(name,other)
Tom1 29 175
Tom1 [29, 175]

3. tuple的相对不可变性

name_tuple = ("Tom3","Tom4")
user_tuple = ("Tom1",29,175)
name_tuple = ("Tom1",[29,175]) # 一般,不建议把可变数据对象放到tuple中
name_tuple[1].append(22)       # 此处,修改数组[29,175]时,数组的id并没有改变,因此可以对该数组修改,实现了对tuple的修改
print(name_tuple)
('Tom1', [29, 175, 22])

4. tuple相对于list好的地方

user_tuple = ("Tom1",29,175)
user_list = ["Tom1",29,175]

# list不可用作为dict的key,tuple可以
user_info_dict = {}
user_info_dict[user_tuple] = "Jack-1"
print(user_info_dict )    # {('Tom1', 29, 175): 'Jack-1'}

user_info_dict[user_list] = "Jack-1"   # 此处执行会报错,    user_info_dict[user_list] = "Jack-1" 
                                        # TypeError: unhashable type: 'list'
print(user_info_dict )   
C:\Users\Amber\PycharmProjects\CollectionsOverview\venv\Scripts\python.exe C:/Users/Amber/PycharmProjects/CollectionsOverview/Chapter2/tuple_test4.py
Traceback (most recent call last):
  File "C:/Users/Amber/PycharmProjects/CollectionsOverview/Chapter2/tuple_test4.py", line 9, in <module>
    user_info_dict[user_list] = "Jack-1"
TypeError: unhashable type: 'list'
{('Tom1', 29, 175): 'Jack-1'}

Process finished with exit code 1

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/f2157120/article/details/104920326

智能推荐

linux安装百度网盘rpm,Deepin、Ubuntu下安装百度网盘baidunetdisk_linux_2.0.1.rpm的方法_杀心成焚的博客-程序员宅基地

本文介绍在Deepin、Ubuntu操作系统下安装百度网盘官方客户端baidunetdisk_linux_2.0.1.rpm的方法,你没有看错,是下载.rpm包并安装在Deepin、Ubuntu下,因为百度网盘截止至2019年6月15日只推出.rpm包,不过可以用在多数主流Linux发行版下。Deepin、Ubuntu下安装百度网盘baidunetdisk_linux_2.0.1.rpm的方法1、..._百度网盘rpm安装

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8-程序员宅基地

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8._android gradle plugin requires java 11 to run. you are currently using java

TensorFlow入门-程序员宅基地

TensorFlow入门一、步骤:①准备数据:采集大量“特征/标签”数据②搭建网络:搭建神经网络结构③优化参数:训练网络获取最佳参数(反传)④应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)二、鸢尾花分类1、采集大量数据对(花萼长、花萼宽、花瓣长、花瓣宽,对应的类别)构成数据集。 输入特征 标签把数据集喂入搭建好的神经网络结构,网络优化参数得到模型,模型读入新输入特征,输出识别结果。2、输入层四个_tensorflow入门

C语言错题整理-程序员宅基地

1.如:int a=10,b=6,c; 如果c=a/b; 此时的c=1,因为整型的除法不是四舍五入,只保留小数位之前的数。2.A&amp;&amp;B:当A(非零值)是真,且B(非零值)是真,才会返回1,表示真;否则,返回0,表示假。 A||B:当A(非零值)是真,或者B(非零值)是真,会返回1,表示真;否则,返回0,表示假。 !A,将A取反,假设A的值或者表达式为真...

隐私浏览器 Tor Browser 8.0.8 发布,安全更新版本-程序员宅基地

Tor Browser 8.0.8 发布了,可通过 Tor Browser 项目页或分发目录获取。新版本包含 Firefox 的重要安全更新,更新内容如下: 所...

spring中的bean的实例化时间和@Lazy注解-程序员宅基地

现在有一个问题 bean的对象是在什么时候创建的?是配置文件加载的时候还是被调用的时候因为spring的对象默认是单例模式,所以它的对象的创建有两种方式1.饿汉式 2.懒汉式可以用下面代码测试默认是那种方式代码1 public class UserService { public UserService(){ System.out.println("无参构造器执行。。。。。。。。。。。"); }}代码2public class vTestSp

随便推点

eval(“(”+result+“)”) 与 $.parseJSON(result)-程序员宅基地

jquery Easyui 当后台传入的是json字符串,需要用javascript

使用py2exe打包发布Python.pygame 程序_py2exe打包pygame-程序员宅基地

废了老鼻子劲,看过无数博文,终于打包成功了。先写上标题,日后慢慢更,有报错的评论区评论一下,日常回复。_py2exe打包pygame

kotlin-let,run,with,apply,also作用域函数详解_kotlin如何修改apply中it的别名-程序员宅基地

前言五个作用域,会比较长。这篇文章,类似于字典。查查。用用。主要需要了解的点① 有什么区别?② 如何选择?作用域函数是什么意思呢通过编译器的手段增加一些操作符,使代码变得更简洁所以,你不用它也完全可以实现相同的功能。它提供了一个临时作用域,让对象执行代码块的 代码看起来更简洁感受一下 作用域函数 带来的代码整洁data class Person(var name: S..._kotlin如何修改apply中it的别名

http://www.xueh188.top/index.php/archives/28/-程序员宅基地

{ field: 'buttons', width: "120px", title: __('操作'), ..._btn-review

鲲鹏上部署nacos的坑记录_arm64 安装nacos_死磕音视频的博客-程序员宅基地

替换base镜像Docker由于nacos的docker镜像只支持x86,所以我们需要自己在arm下打包个nacos替换原来Dockerfile的镜像FROM arm64v8/centos:centos7K8S如果使用k8s,nacos依赖peerfinder插件,该插件官方提供的二进制包是x86的,需要自己打一个镜像由于该插件官方已经废弃了,找不到对应的依赖包,我们这里提供了一个clone 仓库git clone https://github.com/kubernetes-reti_arm64 安装nacos

postman传数组-程序员宅基地

let c = {openid:123,arr:{'project_name':'张三', 'work_unit':'dgfd', 'work_time':'dgfd', 'weather':'sd', 'chengxiang':'sdfd', 'celiang':'d', 'jisuan':'444', 'yiqi':'444', _postman传数组

推荐文章

热门文章

相关标签