for python 取2个值 python获取两个输入_两个字符串组成tuple


上篇文章《yukuan liu:学习Python之HelloWorld》实现了A+B问题的计算,但它只支持一个数字一个数字的输入,输入一个数字就要敲一下回车,可否同时输入“加数 被加数”敲一次回车?下面我们来继续改进下代码。

方法一:split方法,通过指定分隔符对字符串进行切片,默认分隔符是空格。


x=input("请输入加数 被加数:").split()
print(int(x[0])+int(x[1]))


方法二:Python的tuple是支持同时赋值给两个变量


(x, y) = (int(x) for x in input().split())
print(x + y)


上面第一行写的有些简化,涉及 知识点for循环 知识点 tuple元组


# 等价于
l=[]
for x in input().split():
    l.append(int(x))
(x,y)=tuple(l)
print(x+y)


Python中Tuple和List的区别与用法

1.语法上的差别


someTuple = (1,2) 
someList  = [1,2]


2. 数据size上的差别


a = tuple(range(1000)) 
b = list(range(1000))  
a.__sizeof__() # 8024 
b.__sizeof__() # 9088


由于tuples的操作拥有更小的size,也就意味着tuples在操作时相比list更快,当数据足够大的时候tuples的数据操作性能更优。

3. 可执行的操作


b    = [1,2]    
b[0] = 3       # [3, 2]  
a    = (1,2) 
a[0] = 3       # Error


tuples具有immutable的属性,意味着tuples内的元素一旦建立就无法更改、删除、排序,然而我们还是可以向list和tuples添加数据的。


a     = (1,2) 
b     = [1,2]    id(a)          # 140230916716520 
id(b)          # 748527696  
a   += (3,)    # (1, 2, 3) 
b   += [3]     # [1, 2, 3]  
id(a)          # 140230916878160 
id(b)          # 748527696


4. 用法

由上述可知,tuples是immutable,list是mutable的,所以我们可以将tuples用作dictionary的key,但是list不可以


a    = (1,2) 
b    = [1,2]   
c = {a: 1}     # OK 
c = {b: 1}     # Error


因为tuples不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

5. tuple和list存储的数据特性(基于此篇文章)

除了上述区别和用法以外,tuples和list还有一个区别是tuples通常是存储异质元素(heterogeneous)的数据结构,而list通常存储同质元素(homogeneous)的数据结构。

详细解释就是:

  1. Tuples 通常存储的是一连串的不同种类的事务,但是我们将他们当做一个耦合的整体来处理(比如我们可以把键盘、鼠标、显示器、主机存储在一个tuples里,这些元素都是不同种类的元素,但是放在一起处理时可当作一个计算机硬件系统元素来看待,而一旦定义了这个系统,就不能随意更改已有的元素)
  2. List 通常存储的是一连串的相同种类的事务,所以我们可以把list中的每个元素都当做一个独立的个体来处理(也就是mutable的思想,例如list中存储了一些随机整数,他们拥有相同的属性(都是整数),但各自独立(没有任何相关性),我们可以单独的更改list中任何元素而不影响整体的数据结构)

一个关于tuples易错的点(廖雪峰Python教程):

要定义一个只有1个元素的tuple,如果你这么定义:


>>> t = (1)
>>> t


1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。

所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:


>>> t = (1,)
>>> t


(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。