45530


現在、`target`というlist型データの中に、50個のstr型データが格納されています。  
この50個のデータにそれぞれ `data1, data2...` と名前をつけていきたいのですが、  
皆様でしたらどのようにされるでしょうか？  
初歩的な質問で大変恐縮ですが、ご教示いただけましたら幸いです。

ご回答いただきありがとうございます。  
何故そうしたいかというと、list内のテキストのcos類似度をそれぞれ比較した表を作成したいからです。


CC BY-SA 4.0
2018-07-11T11:35:15.580
45514
2018-07-14T05:44:59.717
2018-07-14T05:44:59.717
27030
27030
question
python
pythonでリストの要素にそれぞれ変数をつけたい


配列のまま使うのが通常は便利ですが、特に必要があればグローバル変数を`globals()`を使って次のように作成できます。

[code]

    g = globals()
    for i, v in enumerate(target):
        g["data" + str(i+1)] = v
    
[/code]

ローカル変数の場合は同じように`locals()`があって、値の取得には使えるのですが、変数の作成や変更することには使えません。ローカル変数をどうしても作成する必要があるのであれば次のようにして変数を作成できます。

[code]

    for i, v in enumerate(target):
        exec('data' + str(i+1) + ' = "' + v + '"')
    
[/code]

データサイエンスで使用するのであれば、Pandasを使ったほうが便利です。例えば、次のようにインデックスに名前をつけておけばいいです。`sr['data1']`又は`sr.data1`でアクセスできるし、Pandasの機能も`sr[3:4]`のようにすべて使えるので後の処理で活用しやすいです。

[code]

    sr = pd.Series(target)
    sr.index = ['data' + str(i + 1) for i in range(len(target))]
    
[/code]


CC BY-SA 4.0
2018-07-12T01:11:25.963
45530
2018-07-12T02:28:55.233
2018-07-12T02:28:55.233
15171
15171
45514
answer


> 何故そうしたいかというと、list内のテキストのcos類似度をそれぞれ比較した表を作成したいからです。

これは、二次元配列を作って実現する方が見通しが良いと思います。

`target` という一次元配列に 50 個のテキストが入っているとのことですので、テキスト 2
つ同士の組み合わせを表す二次元配列を作れば良いです。二次元配列なので 2 つ添字が与えられるわけですが、1 つ目の添字に対応するテキストと 2
つ目の添字に対応するテキストのコサイン類似度を保存していく、というわけです。

この仕組みはご自身で実装なさっても良いですし、Pandas をお使いなのであれば
`sklearn.metrics.pairwise.cosine_similarity`
を使うと[一発でできます。](https://stackoverflow.com/a/45393239/5989200)


CC BY-SA 4.0
2018-07-12T15:55:26.787
45561
2018-07-12T15:55:26.787
19110
45514
answer