• 为什么元组只有单个元素时加逗号结尾?


    2019-06-01  14:36:34

    用交互式输入:

    >>> yz=(1)
    >>> yz
    1
    >>> yz1=(1,)
    >>> yz1
    (1,)

    发现没有以逗号结尾也可以创建并输出不过前者输出是整数1,后者输出是元组(1,)。难道前者没有创建一个元组吗?我们来检查上面两个“元组”得到类型:

    >>> type(yz)
    <class 'int'>
    >>> type(yz1)
    <class 'tuple'>

    这回我们发现前者yz只是一个整型变量,而后者yz1才是一个元组。这是因为符号()是一个运算符,当括号中只有数字时并不会创建一个元组。而且元组之间可以进行加法运算(仅此而且)如

    >>> yz=(1)
    >>> yz1=(1,)
    >>> yz2=(1,2)
    >>> yz+yz2
    Traceback (most recent call last):
      File "<pyshell#89>", line 1, in <module>
        yz+yz2
    TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
    >>> yz1+yz2
    (1, 1, 2)

    从错误类型中我们也可以看出yz是一个整型数据。

    所以说创建的元组中只有一个元素时没有加逗号就无法创建为元组,而为其他变量,如:

    >>> x=([1])
    >>> type(x)
    <class 'list'>
    >>> y=([1],)
    >>> type(y)
    <class 'tuple'>
    >>> type(y[0])
    <class 'list'>
    >>> z=({'man':'men'})
    >>> z
    {'man': 'men'}
    >>> type(z)
    <class 'dict'>
    >>> z=({'man':'men'},)
    >>> type(z)
    <class 'tuple'>
    >>> z
    ({'man': 'men'},)
    >>> z[0]
    {'man': 'men'}
    >>> z[0][0]
    Traceback (most recent call last):
      File "<pyshell#116>", line 1, in <module>
        z[0][0]
    KeyError: 0
    >>> z[0]['man']
    'men'
    >>> type(z['man'])
    <class 'str'>
    >>> z['man']
    men
  • 相关阅读:
    JS高级——eval
    JS高级——Object.prototype成员
    JS高级——原型链
    JS高级——逻辑中断
    移动web——bootstrap媒体对象
    移动web——bootstrap如何修改原组件
    移动web——bootstrap响应式轮播图
    Leetcode题解
    位运算实现四则运算(C++实现)
    扫码登陆原理
  • 原文地址:https://www.cnblogs.com/shuxincheng/p/10959546.html
Copyright © 2020-2023  润新知