web-dev-qa-db-ja.com

Python:最小の整数を見つける

私は次のコードを持っています:

l = ['-1.2', '0.0', '1']

x = 100.0
for i in l:
    if i < x:
        x = i
print x

コードはリスト内の最小値(-1.2)を見つける必要がありますが、代わりに「x」を印刷すると、値がまだ100.0であることがわかりますコードはどこに問題がありますか?

24
sarah

リストの最小値を見つけるには、 min を使用することもできます。

x = min(float(s) for s in l) # min of a generator

または、浮動小数点数ではなく文字列として結果が必要な場合は、 キー関数 を使用します。

x = min(l, key=float)
39
Olivier Verdier

整数を比較するのではなく、文字列を比較します。文字列は、値をfloatに変換することにより(必要に応じて)代わりに、辞書式に(文字ごとに意味する)比較します。比較する前に、リストに数値(必要に応じて浮動小数点または整数)を保持させるか、文字列をループ内の浮動小数点または整数に変換します。

min組み込み関数にも興味があるかもしれません。この関数は、現在のループが実行していることを既に実行しています(つまり、変換せずに)。

23
Thomas Wouters

リストを数字のリストに変換したいようです

>>> foo = ['-1.2', '0.0', '1']
>>> bar = map(float, foo)
>>> bar
[-1.2, 0.0, 1.0]
>>> min(bar)
-1.2

または、本当に必要な文字列である場合は、minkey引数を使用します

>>> foo = ['-1.2', '0.0', '1']
>>> min(foo, key=float)
'-1.2'
18
Mike Graham

Pythonには、最小値を見つけるのに役立つmin関数が組み込まれています。

ただし、最小の整数を見つける前に、リストアイテムを数値に変換する必要があります(そのフロートは何ですか?)

min(float(i) for i in l)
6
satoru

lは文字列のリストです。そのような単一引用符の間に数字を入れると、文字のシーケンスである文字列が作成されます。コードを適切に機能させるには、これを行う必要があります。

l = [-1.2, 0.0, 1]  # no quotation marks

x = 100.0
for i in l:
    if i < x:
        x = i
print x

文字列のリストを使用する必要がある場合は、Python各文字列から数字を作成してみてください。これは Justinの答え と似ていますが、それ以外は浮動小数点(10進数)数を正しく理解します。

l = ['-1.2', '0.0', '1']

x = 100.0
for i in l:
    inum = float(i)
    if inum < x:
        x = inum
print x

これが、Pythonまたは一般的なプログラミングのいずれかを学ぶために書いているコードであることを望みます。これが事実である場合、素晴らしい。しかし、これが本番コードの場合、Pythonの組み込み関数。

l = ['-1.2', '0.0', '1']
lnums = map(float, l)  # turn strings to numbers
x = min(lnums)  # find minimum value
print x
3
Wesley

比較を行う前に、変数をfloatにキャストします。

if float(i) < float(x):

問題は、文字列をフロートと比較していることです。これは機能しません。

2
Justin Ethier
number_list = [99.5,1.2,-0.3]

number_list.sort()

print number_list[0]
2
Yang Wang
list1 = [10,-4,5,2,33,4,7,8,2,3,5,8,99,-34]

print(list1)

max_v=list1[0]

min_v=list1[0]

for x in list1:
    if x>max_v:
        max_v=x
        print('X is {0} and max is {1}'.format(x,max_v))
for x in list1:
    if x<min_v:
        min_v=x
        print('X is {0} and min is {1}'.format(x,min_v))

print('Max values is ' + str(max_v))
print('Min values is ' + str(min_v))
2
AlexPes

正しいコードはどこかから始める必要があります:

最小値を返すコード

l = [ '0.0', '1','-1.2'] x = l[0] for i in l: if i < x: x = i print x

ただし、引用符''を使用する代わりに、整数を直接使用することをお勧めします

この方法

l = [ 0.0, 1,-1.2] x = l[0] for i in l: if i < x: x = i print x

1
Fahtima
l = [-1.2, 0.0, 1]

x = 100.0
for i in l:
    if i < x:
        x = i
print (x)

これが答えです、宿題にこれが必要で、あなたのコードを取り、数字の周りの「」を削除して、それがうまくいった、これが助けてくれることを願っています

1
Horse

または、リストでフロートを指定するだけで、フロート変換はまったく行われません。

l = [-1.2, 0.0, 1]
x = min(l)

または

l = min([-1.2, 0.0, 1])
1
BrendanSimon

リストに文字列があり、それらを数字100.0と比較しています。

0
Plamen Dragozov

'''関数'''

import math

#functions
def min3(x1,x2,x3):
    if x1<= x2 and x1<= x3:
        return x1
    Elif x2<= x1 and x2<= x3:
        return x2
    Elif x3<= x2 and x3<= x1:
          return x3
print(min3(4, 7, 5))

print(min3(4, 5, 5))

print(min3(4, 4, 4))

print(min3(-2, -6, -100))

print(min3("Z", "B", "A"))
0
your plugg