zoukankan      html  css  js  c++  java
  • 为什么元组只有单个元素时加逗号结尾?

    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
  • 相关阅读:
    BZOJ 4260 Codechef REBXOR
    [SHOI2008]小约翰的游戏John
    [POI2016]Nim z utrudnieniem
    [CQOI2013]棋盘游戏
    [SDOI2016]硬币游戏
    [BZOJ3083]遥远的国度
    [Luogu3727]曼哈顿计划E
    [HihoCoder1413]Rikka with String
    [CF666E]Forensic Examination
    [BZOJ4004][JLOI2015]装备购买
  • 原文地址:https://www.cnblogs.com/shuxincheng/p/10959546.html
Copyright © 2011-2022 走看看