0

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

a=[0,['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
   for ix, char in enumerate(row):
       if 'hello' in char:
           row[ix] = 'Good Morning'

しかし、同じリストに整数、浮動小数点、および文字列があるため、これは機能しません。Hello を Good Morning に変更し、データ構造と属性タイプを保存する必要があります。これは、後でそのデータを使用して算術計算を行うためです。ありがとう!

4

1 に答える 1

2

「こんにちは」を「おはよう」に置き換えるだけなら、次のようにできます。

a = [[0], ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    for index, item in enumerate(row):
        if item == "hello":
            row[index] = "Good morning"

「hello」を含む文字列を本当に置き換えたい場合は、try except ブロックですべてをラップします。

a = [[0], ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    for index, item in enumerate(row):
        try:
            if "hello" in item:
                row[index] = "Good morning"
        except TypeError:
            pass

ちなみに「char」はひどい変数名です。行には長さ 1 の文字列が含まれていないため、文字ではありません。

最初の行は、実際には単一の整数を含むリストでなければなりません。なんらかの理由で本当にそうしたくない場合は、すべてを別の try/except ブロックでラップする必要があります。

a = [0, ['hello','charles', 'hey', 'steve', 'hey', 0.0, 1.5, 23]]  
for row in a:
    try:
        for index, item in enumerate(row):
            if item == "hello":
                row[index] = "Good morning"
    except TypeError:
        pass
于 2013-03-06T19:50:41.317 に答える