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

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

填充列表列表以使其等于最大列表的大小

填充列表列表以使其等于最大列表的大小

慕后森 2023-03-30 17:20:21
我有一個句子列表列表,我想填充所有句子,使它們的長度相同。我能夠做到這一點,但我正在努力尋找最佳的做事方式和挑戰自己。max_length = max(len(sent) for sent in sents)list_length = len(sents)sents_padded = [[pad_token for i in range(max_length)] for j in range(list_length)]for i,sent in enumerate(sents):    sents_padded[i][0:len(sent)] = sent 我使用了輸入:sents = [["Hello","World"],["Where","are","you"],["I","am","doing","fine"]]pad_token = "Hi"我的方法是一種有效的方法還是有更好的方法?
查看完整描述

4 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

這是在 itertools(在 python3 中)中提供的,用于迭代,帶有 zip_longest,您可以使用 zip(*) 正常反轉它,如果您更喜歡它而不是迭代器,則將其傳遞給列表。


import itertools

from pprint import pprint


sents = [["Hello","World"],["Where","are","you"],["I","am","doing","fine"]]

pad_token = "Hi"


padded = zip(*itertools.zip_longest(*sents, fillvalue=pad_token))

pprint (list(padded))

[['Hello', 'World', 'Hi', 'Hi'],

['Where', 'are', 'you', 'Hi'],

['I', 'am', 'doing', '美好的']]


查看完整回答
反對 回復 2023-03-30
?
蝴蝶不菲

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

以下是如何使用str.ljust()填充每個字符串,并使用max()keylen來查找填充每個字符串的數字:


lst = ['Hello World', 'Good day!', 'How are you?']


l = len(max(lst, key=len)) # The length of the longest sentence

lst = [s.ljust(l) for s in lst] # Pad each sentence with l


print(lst)

輸出:


['Hello World ',

 'Good day!   ',

 'How are you?']


查看完整回答
反對 回復 2023-03-30
?
波斯汪

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

假設:


輸出應與 OP 輸出相同(即每個子列表中的單詞數相同)。


輸入:


sents = [["Hello","World"],["Where","are","you"],["I","am","doing","fine"]]

pad_token = "Hi"

以下 1-liner 產生與 OP 代碼相同的輸出。


sents_padded = [sent + [pad_token]*(max_length - len(sent)) for sent in sents]


print(sents_padded)

# [['Hello', 'World', 'Hi', 'Hi'], ['Where', 'are', 'you', 'Hi'], ['I', 'am', 'doing', 'fine']


查看完整回答
反對 回復 2023-03-30
?
米脂

TA貢獻1836條經驗 獲得超3個贊

當我計時時,這似乎更快:


maxi = 0

for sent in sents:

    if sent.__len__() > maxi:

        maxi = sent.__len__()

for sent in sents:

    while sent.__len__() < maxi:

        sent.append(pad_token)

print(sents)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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