亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

普通演講中的雙列表理解

普通演講中的雙列表理解

慕妹3242003 2023-05-16 14:54:11
我在我的代碼中實現了以下列表理解,并且它有效:[string for row in series for string in row]背景:我有一個 pandas 系列的字符串列表。所以系列的每一行都有一個列表,每個列表都有幾個字符串。所以我想使用列表理解從系列中的每個列表中提取所有字符串并將它們編譯成一個大列表。問題:僅閱讀語法,我很難直觀地理解理解中發生的事情。誰能用通俗易懂的英語拼寫出來?例如,對于標準列表綜合([x for x in z]),我可以將其描述為“一個列表,其中 ax 表示 z 中的每個 x”。我不知道這是否真的是一個可行的問題,但我認為這值得一問!謝謝。
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

numpy是你的朋友。使用它并跳過 for 循環


# sample series

s = pd.Series([list('abcd'),

               list('efgh'),

               list('ijkl')])

# concat your series

l = np.concatenate(s)



array(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'],

      dtype='<U1')


查看完整回答
反對 回復 2023-05-16
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

它所做的只是展平列表列表,例如


nested_list = [[1, 2, 3],

               [4],

               [5, 6]]

flat_list = [item for inner_list in nested_list for item in inner_list]


# flat_list will be [1, 2, 3, 4, 5, 6]

要理解它,只需將其寫成嵌套的 for 循環即可:


result = []

for row in series:

    for string in row:

        result.append(string)

基本上它作為嵌套循環從左到右讀取,但內部代碼位于開頭。


您可以通過弄亂原始代碼中的間距來看到這一點:


result = [

    string 

    for row in series # : <- pretend colons

        for string in row # : 

            # result.append(string) <- this bit just goes to the start in list comprehension land

]

順便說一下,你顯然可以更快地使用itertools.chain(但我不確定這是否仍然適用于 a pd.Series):


import itertools

result  = list(itertools.chain(*series.tolist()))


查看完整回答
反對 回復 2023-05-16
  • 2 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號