Python 如何按列表长度重复列表中最大的元素

Python 如何按列表长度重复列表中最大的元素,python,list,Python,List,编写一个名为all_change_to_max_end的Python函数,该函数将整数列表作为输入,确定列表中的第一个或最后一个元素哪个更大,然后将所有其他元素设置为该值。输出更改的列表 输入和输出示例: all_change_to_max_end([1, 2, 4, 9, 3]) # should be [3, 3, 3, 3, 3] all_change_to_max_end([11, 5, 9]) # should be [11, 11, 11] all_change_t

编写一个名为all_change_to_max_end的Python函数,该函数将整数列表作为输入,确定列表中的第一个或最后一个元素哪个更大,然后将所有其他元素设置为该值。输出更改的列表

输入和输出示例:

all_change_to_max_end([1, 2, 4, 9, 3]) # should be [3, 3, 3, 3, 3] 

all_change_to_max_end([11, 5, 9])      # should be [11, 11, 11] 

all_change_to_max_end([2, 11])         # should be [11, 11]
我试过使用:

def all_change_to_max_end(a_list):

    return max(a_list) * len(a_list)
但这不起作用,因为它将最大的数字乘以总长度

all_change_to_max_end([2, 10, 4, 8]

40

任何帮助都将不胜感激

正确答案是:
[max(a_列表[-1],a_列表[0])]*len(a_列表)

在此函数中传递列表:

def all_change_至_max_end(x):
#选择最大值并将其转换为列表
返回[max(x[0],x[-1])]*(len(x))
数字=[1,5,8,4,3,7,9,7]
打印(所有更改为最大结束(数字))
出[79]:[7,7,7,7,7,7,7,7]


您需要检查这两个元素的最大值(第一个和最后一个)

这会改变吗

当您执行max(list)时,它会返回一个值而不是列表,因此将其乘以一个数字就是简单的乘法

max(list) * len(list) #let max = 10 and length = 4, then its output is 40
我也是

这是示例输出

>>> a = [1, 2, 4, 9, 3]
>>> def all_change_to_max_end(a_list):
...     return [max(a_list[0],a_list[-1])] * len(a_list)
...
>>> all_change_to_max_end(a)
[3, 3, 3, 3, 3]
你可以做:

def all_change_to_max_end(l):
    a = l[0]
    b = l[-1]
    return [max(a,b)] * len(l)

print(all_change_to_max_end([11, 5, 9]))
输出

[11, 11, 11]

那么
[max(a_列表)]*len(a_列表)
呢?您确实意识到您接受的答案既不是函数,也不会返回第一个和最后一个值之间的最大值?是的,我在测试后不久就意识到了这一点。我显然没有读到正确的问题。必须选择第一个和最后一个元素之间的最大值[max(x[1],x[-1]),因为I在范围内(len(x))],它将在循环每次运行时计算最大值,所以最好保存它
x[1]
x
的第二个元素,而不是第一个。新手错误。现在变了。谢谢你的注意。
def all_change_to_max_end(l):
    a = l[0]
    b = l[-1]
    return [max(a,b)] * len(l)

print(all_change_to_max_end([11, 5, 9]))
[11, 11, 11]