日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中难的算法_一个python的比较难的算法,有懂的人可以进来一下

發布時間:2024/7/19 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中难的算法_一个python的比较难的算法,有懂的人可以进来一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問 題

我的需求:

結構數據是這樣的:

要求按照這樣的公式:

組合一: 時間詞+地方詞+動詞+等級+名詞+價格詞;

比如

2016年深圳大鵬新區給健康全身檢查要多少錢

就是按照這樣的公式組合出來的關鍵詞

那么有什么辦法用最短的辦法來實現,我下面是我的算法,用pandas的算法:

for times in df[df["時間詞"].notnull()]["時間詞"]:

for area in df[df["地方詞"].notnull()]["地方詞"]:

for dong in df[df["動詞"].notnull()]["動詞"]:

for leave in df[df["等級"].notnull()]["等級"]:

for name in df[df["名詞"].notnull()]["名詞"]:

for price in df[df["價格詞"].notnull()]["價格詞"]:

data = (times+area+dong+leave+name+price)

但是這樣的代碼太不優雅,而且封裝成函數太難~

我想要的效果是這樣的:

比如:

我寫一個公式

cols = ["時間詞","地方詞","動詞","等級","名詞","價格詞"]

#或則是

cols = ["地方詞","動詞","等級","名詞","價格詞"]

然后把這個列表傳入一個函數中,就可以得出我上面的效果~

這個要如何實現?

補充一下,如果看不懂提問的人可以這樣理解這個題目

我有3個列表:

a = ["1","2","3","4","5"]

b = ["a","b","c"]

c = ["A","B"]

我要這樣的組合: a中的每個元素和b,c中的每個元素都進行組合

這個一個很簡單的多重循環就可以解決:

for A in a:

for B in b:

for C in c:

print (A+B+C)

這當然很簡單,但是假如我有10000個這樣的列表要重組?

難不成要手工復制黏貼每個循環10000次?這顯然不太現實

在python中有沒有比較好的函數或是比較好的方法來實現這個東西?

改問題已經解決,要感謝Taku的解答.完全符合需求

附上我修改后的代碼

import itertools

def zuhe(cols):

b = pd.Series()

for col in cols:

b = b.append(pd.Series({col:list(df[df[col].notnull()][col])}))

for x in itertools.product(*(b.values)):

print (x)

zuhe(cols = ["時間詞","地方詞","動詞"])

只需要傳入需要組合的列表詞,就可以得到結果!!

解決方案

試試itertools

import itertools

for x in itertools.product([1,2,3,4],[2,3,4],[1,1,2,2,3,3]):

print x

哈哈,其實就是一個求笛卡爾積的問題

要學會組織關鍵詞,善用搜索

掃一掃關注IT屋

微信公眾號搜索 “ IT屋 ” ,選擇關注與百萬開發者在一起

總結

以上是生活随笔為你收集整理的python中难的算法_一个python的比较难的算法,有懂的人可以进来一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。