在Python中找到最小变量

时间:2015-07-09 21:30:29

标签: python integer minimum

我有一些整数变量,我想找到最小的变量。当我使用时:

m1 = min(v1, v2, ...)

我得到最小的,而不是它的名字。我想知道哪一个是最小的,不知道它的价值!我该怎么做?

5 个答案:

答案 0 :(得分:1)

所以你有两个变量v1和v2,想要打印v1是小的还是v2:

if( v1 > v2 ):
    print "v1 =": str(v1)
    #or print "v1 is smaller"  
else:
    print "v2 =": str(v2)

如果你有很多变量,那么将它们存储在字典中可能是个更好的主意。

答案 1 :(得分:1)

如果索引号可行,您可以这样做:

# enter variables
a = 1
b = 2
c = 3

# place variables in list
l = (a,b,c)

# get index of smallest item in list
X = l.index(min(l))

# to print the name of the variable
print(l[X])
然后, X是最小变量的索引号(在本例中为0),可以根据需要使用,或者可以使用l [X]来访问变量名。

(但不要像我一样使用小写“L”,通常不会被认为是好的风格'因为它很容易被误认为是上层cas“i”或数字1)。

答案 2 :(得分:1)

使用python-varname包:

https://github.com/pwwang/python-varname

from varname import Wrapper

v1 = Wrapper(3)
v2 = Wrapper(2)
v3 = Wrapper(5)

v = min(v1, v2, v3, key=lambda x:x.value)

assert v is v2

print(v.name)
# 'v2'

答案 3 :(得分:0)

获取任何变量的名称是一个充满争议的主题,您可以在How to get a variable name as a string in Python?

中看到

但是,如果上述答案中的某个解决方案是可接受的,那么您将拥有一个变量名称/值对的字典,您可以对其进行排序并采用最小值。例如:

vals = {"V1": 1, "V2": 3, "V3": 0, "V4": 7}
sorted(vals.items(), key=lambda t: t[1])[0][0]
>>> 'V3'

答案 4 :(得分:0)

def ShowMinValue(listofvalues):
     x = float(listofvalues[0])
     for i in range(len(listofvalues)):
         if x > float(listofvalues[i]):
            x = float(listofvalues[i])
     return x
print ShowMinValue([5,'0.1',6,4,3,7,4,1,234,'2239429394293',234656])
  

返回0.1

现在,要设置变量,只需输入:

variable = ShowMinValue(listOfPossibleNumbers)

如果你想要一个永不例外的版本:

def ShowMinValue(listofvalues):
    try:
        x = createdMaxDef(listofnumbers) #Your maximum possible number, or create an max() def to set it. to make it, set that '>' to '<' and rename the method
    except Exception:
        pass
    for i in range(len(listofvalues)):
        try:
            if x > float(listofvalues[i]):
                x = float(listofvalues[i])
        except Exception:
            pass
     return x
print ShowMinValue([5,'0.1',6,4,'',3,7,4,1,234,'2239429394293',234656])
  

返回2239429394293(将&#39;&gt;&#39;更改为&#39;&lt;&#39;)