2017-12-29 10 views
0
import random 
result = [] 
for i in list_data: 
    for e in list_data: 
     result += str(i,e) 
# ====== 
return result 


import gowithflow as gwf 
a = ['a', 'b', 'c'] 
gwf.number_of_cases(a) 
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc'] 

a = ['a', 'a'] 
gwf.number_of_cases(a) 
['aa'] 

a = [1, 2, 3, 'a'] 
gwf.number_of_cases(a) 
['11', '12', '13', '1a', '21', '22', '23', '2a', '31', '32', '33', '3a', 'a1', 'a2', 'a3', 'aa'] 
# ''' 

元のリストのすべての値のペアで新しいリストが必要です。すべての一対の値が 'str'形式に戻ります。同じ値のペアがある場合は、2つの値のいずれかが削除されます。私のコードは前半、後半は一例です。リストのあるケースの数は、Python

はTypeErrorが印刷されています。あなたが与えている例が、ご希望の出力は、次の解決策が十分でなければならないしている場合

デコードSTRは

+1

を与えますか? – schwobaseggl

+1

'list(' dのaのdのcのための(str(c)+ str(d)の設定)) ' – chrisz

+0

' list_dataはどこから来ますか?あなたの質問にはエラーの**完全**トレースバックを入れてください。 'decode()'は通常 'bytes'オブジェクトで使用されるので、' gowithflow'モジュールの中で型を混在させているかもしれません。 – cdarke

答えて

2

サポートされていません。

list(set([str(c) + str(d) for c in a for d in a])) 

コードの内部では、すべてのペアのリストが作成されますが、重複は削除されません。

[str(c) + str(d) for c in a for d in a] 

セットに変換してリストに戻すと、重複が削除されます。

a = ['a', 'a'] 

出力:

['aa'] 

第二の例:

a = [1, 2, 3, 'a'] 

出力:

['33', '2a', 'aa', '1a', '31', '23', '3a', '13', 'a2', 'a3', '32', '11', '21', 'a1', '12', '22'] 

EDIT:

順序があなたにとって重要である、とあなたがあなたの例からの注文をしたい場合は、この操作を行うことができます。

def uniq(input): 
    output = [] 
    for x in input: 
    if x not in output: 
     output.append(x) 
    return output 

a = [1, 2, 3, 'a'] 
ordered_with_duplicates = [str(c) + str(d) for c in a for d in a] 
ordered_no_duplicates = uniq(ordered_with_duplicates) 

出力:

['11', '12', '13', '1a', '21', '22', '23', '2a', '31', '32', '33', '3a', 'a1', 'a2', 'a3', 'aa'] 
+0

ありがとう!出来た。私はちょうど1ヶ月前にPythonを始めました。だからこの問題は2,3日かかりました。ありがとうございます:) – olorolor

+0

もちろん!あなたが注文を気にするなら、以下の@Patrick Haughの答えがきれいです。 – chrisz

2

あなたがペアを生成するためにitertools.productを使用して、使用することができます''.joinを文字列に変換します。

from itertools import product 

a = [1, 2, 3, 'a'] 

[''.join(x) for x in product(map(str, a), repeat=2)] 

は、入力が与えられているため所望の出力である何私たちに

['11', '12', '13', '1a', '21', '22', '23', '2a', '31', '32', '33', '3a', 'a1', 'a2', 'a3', 'aa'] 
+0

ありがとう!私がまだ初心者であるためにこのようなコードを見たことがないとしても...とても面白いです。ありがとうございました! – olorolor

関連する問題