0

私はPython /プログラミングの初心者です。Python 2.7 の使用

あるリストの要素を別のリストの要素から「差し引く」方法を見つけようとしています。ただし、整数を扱っていないため、「減算」を引用符で囲み、別の説明方法が思いつきませんでした。

まず、私のコードは次のとおりです。

plural_string = "cell phones|sheep|oxen" # result of user input with raw_input()
plural_endings_string = "s,,en"                   # result of user input with raw_input() - always comma separated.  
plural_list = plural_string.split('|')
plural_endings_list = plural_endings_string.split(',')

# This is pseudo code since '-' does not work with non-integers in a string
# but it expresses what I am trying to achieve
new_list = [a - b for a, b in zip(plural_list, plural_endings_list)] 

それで、私が実際に新しいリストを次のようにしたいのは次のとおりです。

>>> new_list
>>> ['cell phone', 'sheep', 'ox']

plural_list私は基本的に、変数の複数語尾(要素)を使用して、変数の単語(要素)を複数形にしたいと考えていplural_endings_listます。

注意すべき重要な点は次のとおりです。リスト内の要素の数 (したがって、単語の選択) は、ユーザー入力 (私) によって異なります。したがって、別の状況では、私が作業しているリストは次のようになります。

plural_list = ['children', 'brothers', 'fish', 'penguins']
plural_endings_list = ['ren', 's', '', 's']

「.replace」関数を使用して、リストではなく文字列を使用してこれを行う方法を見つけようとしましたが、それぞれのユーザー入力がどうなるかわからないため、レンガの壁にぶつかります。スクリプトの実行。「すべてに当てはまる」ソリューションが見つかりませんでした。正規表現も試してみましたが、ユーザー入力がどうなるかわからないという同じ問題がありました。それは今、私の初心者の脳を超えています。

うまくいけば、私は自分自身を明確に説明しました!そうでない場合は、SOでこの他の質問の反対をしようとしています-2つのリストの要素を1つのリストに追加するにはどうすればよいですか? しかし、連結の代わりに、「減算」が必要です

乾杯ダレン

EDIT1: @brad コメントへの応答。実際には、plural_endings_listユーザー入力を介して複数の語尾をフィードします (これはより大きなスクリプトの一部です)。したがって、リストに要素が含まれている場合は、の末尾として"children's"選択します。常にケース固有です。"'s"plural_endings_list

EDIT2: @Graeme Stuart のコメントに応えて。Graeme - 入力の長さは常に異なります。各リストには 2 つの要素が含まれる場合もあれば、各リストに 10 の要素が含まれる場合もあれば、その中間の要素が含まれる場合もあります。

4

3 に答える 3

1
>>> p = 'children'
>>> e = 'ren'
>>> if p.endswith(e):
...   print p[:-len(e)]
... 
child
于 2013-10-08T20:25:09.033 に答える
1

これはあなたが必要とすることだと思います。しかし、少し不格好です。入力は常に同じ長さになりますか?

def depluralise(plurals, plural_endings):
    new_list = []
    for plural, plural_ending in zip(plurals, plural_endings):
        if plural.endswith(plural_ending):
            if plural_ending == '':
                new_list.append(plural)
            else:
                new_list.append(plural[:-len(plural_ending)])
    return new_list 


plural_string = "cell phones|sheep|oxen"
plurals = plural_string.split('|')
plural_endings_string = "s,,en"
plural_endings = plural_endings_string.split(',')

print depluralise(plurals, plural_endings)

plurals = ['children', 'brothers', 'fish', 'penguins']
plural_endings = ['ren', 's', '', 's']

print depluralise(plurals, plural_endings)
于 2013-10-08T20:45:50.627 に答える