在此示例中加号有什么作用?

时间:2018-12-17 20:33:39

标签: python python-3.x

给出以下两个变量:

 Row = [Row(name='a', age=12, gender='man', score='123'), Row(name='b', age=23, gender='woman', score='110'), Row(name='c', age=120, gender='man', score='60')]

headers = ('name', 'age', 'gender', 'score')

当我遍历它们以获取每行中带有加号的最大项目时,我得到以下内容:

for i in range(4):

    print(max([str(x[i]) for x in Row]+[headers[i]]))

...
name
age
woman
score

但是当我用逗号替换加号时,我得到以下信息:

for i in range(4):

    print(max([str(x[i]) for x in Row],[headers[i]]))

...
['name']
['age']
['man', 'woman', 'man']
['score']

所以,基本上我的问题是,加号有什么作用?通常,我会使用逗号分隔可迭代对象来调用max函数,例如max(list1, list2),但在此示例中,max函数的调用是这样的max(list1+list2)

3 个答案:

答案 0 :(得分:2)

它将列表加在一起 例如

list1 = [1,2,3,4]
list2 = ['frog', 'dog']
print(list1 + list2)

输出:

[1, 2, 3, 4, 'frog', 'dog']

答案 1 :(得分:1)

它串联列表,也就是说,它将两个列表连接在一起成为一个大列表:

>>> a = [1, 2, 3]
>>> b = ['x', 'y', 'z']
>>> c = a+b
>>> print(c)
[1, 2, 3, 'x', 'y', 'z']

如果您有一个print语句,后跟用逗号分隔的项目,则它将只打印这些项目,并用空格分隔。

>>> print(a,b)
[1, 2, 3] ['x', 'y', 'z']

当您致电max(list1, list2)时,这意味着“查看list1list2这两个项目,并返回具有“最大”值的项目。”当您调用max(list1+list2)时,这意味着“将list1list2合并为一个大列表,然后从该组合列表中选择“最大”项。”我将“最大”一词放在引号中是因为max()也适用于非数字项。

>>> d = [7, 8, 9]
>>> e = [0, 75, 21]
>>> print(max(d,e))
[7, 8, 9]
>>> print(max(d+e))
75

第一个返回[7, 8, 9]的原因是因为Python认为它比[0, 75, 21]“更大”。这是因为当比较两个列表时,Python会按字典顺序对其进行检查。 7大于0,所以:

>>> d > e
True

答案 2 :(得分:0)

它将两个列表合并为一个大列表。

# The two different lists
letters = ['a','b','c']
numbers = [1,2,3]

# The plus sign
print(letter + number)

# Your result
['a','b','c',1,2,3]