Jus*_*tin 19 python arrays python-3.x
这是我的程序
item_no = []
max_no = 0
for i in range(5):
input_no = int(input("Enter an item number: "))
item_no.append(input_no)
for no in item_no:
if no > max_no:
max_no = no
high = item_no.index(max_no)
print (item_no[high])
Run Code Online (Sandbox Code Playgroud)
输入示例: [5, 6, 7, 8, 8]
输出示例: 8
如何更改程序以在数组中输出相同的最高数字?
预期产量: [8, 8]
Ev.*_*nis 29
只需获得最大的使用量max,然后将其最大化,然后count将两者合并成一个列表即可。
item_no = [5, 6, 7, 8, 8]
max_no = max(item_no)
highest = [max_no for _ in range(item_no.count(max_no))]
print(highest) # -> [8, 8]
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的最大值仅出现一次,这将返回单个项目的列表。
与您当前的编程风格更接近的解决方案是:
item_no = [5, 6, 7, 8, 8]
max_no = 0 # Note 1
for i in item_no:
if i > max_no:
max_no = i
high = [i]
elif i == max_no:
high.append(i)
Run Code Online (Sandbox Code Playgroud)
结果与上述相同。
笔记
-math.inf则应使用初始化。请注意,第二个代码段的效率比第一个代码段差很多。Python使您比这些显式的,类似于fortran的循环更有效,并且在正确使用它时本身也会更有效。
All*_*lan 19
You can do it even shorter:
item_no = [5, 6, 7, 8, 8]
#compute once - use many times
max_item = max(item_no)
print(item_no.count(max_item) * [max_item])
Run Code Online (Sandbox Code Playgroud)
Output:
[8, 8]
Run Code Online (Sandbox Code Playgroud)
您可以通过list以下方式对该任务使用理解:
numbers = [5, 6, 7, 8, 8]
maxnumbers = [i for i in numbers if i==max(numbers)]
print(*maxnumbers,sep=',')
Run Code Online (Sandbox Code Playgroud)
输出:
8,8
Run Code Online (Sandbox Code Playgroud)
*in print中的operator 用于解压缩值,sep用于告知print要使用的分隔符:,在这种情况下。
编辑:如果您想获取最大价值的索引并max仅调用一次,则请执行以下操作:
numbers = [5, 6, 7, 8, 8]
biggest = max(numbers)
positions = [inx for inx,i in enumerate(numbers) if i==biggest]
print(*positions,sep=',')
Run Code Online (Sandbox Code Playgroud)
输出:
3,4
Run Code Online (Sandbox Code Playgroud)
您可能会检查numbers[3]等于biggest和numbers[4]等于biggest。
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |