#pythonのリスト内包表記でelseで複数の処理を行いたい。
以下のようなfor文を内包表記で書くことは可能でしょうか?
※get_hash関数は与えられた変数に対して文字列を返す関数です。
##もともとやりたい処理
datetimeは時間、user_idはユーザーIDでこれらはログのデータになります。
同一ユーザーIDで30分以内でしたら、同一のセッションとみなし、user_id+そのセッションの最古のdatetimeでハッシュ化を行います。
python
1#get_hash関数は与えられた変数に対して文字列を返す関数です。 2def get_hash(text1,text2): 3 text = str(text1)+str(text2) 4 session_id=hashlib.sha256(text.encode()).hexdigest() 5 return session_id 6 7 8text=[] 9j=0 10for i in range(len(user_id)): 11 if user_id[i]==user_id[j] and datetime[i]-datetime[j] <=1800: 12 text.append(get_hash(user_id[i],datetime[j])) 13 14 else: 15 text.append(get_hash(user_id[i],datetime[i])) 16 j=i
このj=iが内包表記でうまく表せず、悩んでいます。
これを内包表記で書ければご教示いただけると幸いです。
(内包表記を使う理由が速度を上げたいからなので、このコードに速度を上げる余地があれば教えていただけると幸いです。)
回答2件
あなたの回答
tips
プレビュー