包含字符串

时间:2017-06-02 01:14:31

标签: python

我想知道为什么结果为'4'如果我写下面的代码:

lists = ['1','2','3','4']
print(max(lists))
lists.append(5)
print(max(lists))

我认为列表的最大方法首先从str转换为int,然后在前几行中给出最大值int s,但这似乎是不真实的我尝试下一行。谁能解释一下呢?

3 个答案:

答案 0 :(得分:1)

您的列表包含字符串,并且您附加一个整数。

列出= [' 1',' 2',' 3',' 4',5]

TypeError: '>' not supported between instances of 'str' and 'int'

如果你只有字符串或只有int&max; s max将进行比较,因为'>'运营商将工作。您需要将列表转换为所有字符串或所有整数。

lists = [int(x) for x in lists]    #by list comprehension
>>> max(lists)                     # lists= [1, 2, 3, 4, 5]
>>> 5

lists = [str(x) for x in lists]    
>>> max(lists)                     # lists = ['1', '2', '3', '4', '5']
>>> '5'

如果您还没有看过列表推导,那么它可以更快地完成这一操作,而且只需一行代码。

new_list = []
for x in lists:
    x = int(x)  #convert each individual term to integer objects
    new_list.append(x)
lists = new_list

答案 1 :(得分:0)

你可以试试这个:

lists = ['1','2','3','4']

print(max(list(map(int, lists))))

lists.append(5)

print(max(list(map(int, lists))))

答案 2 :(得分:0)

实际上,对于以下两种情况,它都不会为您TypeError提供'4'

list = ['1', '2', '3', '4']
list = ['1', '2', '3', '4', 5]

因为在比较python中的对象时,str总是> int这就是为什么您将'4'作为最大值,因为它是strings

中的最高值

这是一个证明我在说什么的例子:

>print '1' > 5
True
>print '1' > '5'
False