看板 Python 關於我們 聯絡資訊
最簡單的想法是 test_string_lst = ['abct', 'dccd', 'aefgg'] for string in test_string_lst: print(string[:2]) 這樣可以取出每個字串的前n個字元,但需要iterate list內所有字串。 有沒有能夠一次輸出前n個字元的方式? 有看到個類似的方法 test_string_lst = ['abct', 'dccd', 'aefgg'] for c in zip(*test_string_lst): print(c) 這樣可以把所有string的字元按照順序輸出。 但有兩個問題 1.會受限於最短字串長度 2.好像不能讓它輸出前n個 --------------- 輸出format: 輸出以下方式都可以 假設n為2的話希望輸出 ["ab", "dc", "ae"] ["ada", "bce"] 或是其他型態 只要能快速取出前n個字元就好 因為list中string數量很大,所以想避免去iterate list 先感謝各位大神 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.187.156 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1630764206.A.DFE.html
ckc1ark: 這兩個輸出就不一樣了 要不要先確定一下output format 09/04 22:13
抱歉沒寫清楚 補上輸出 ※ 編輯: qoo33456 (59.115.187.156 臺灣), 09/04/2021 22:21:42 ※ 編輯: qoo33456 (59.115.187.156 臺灣), 09/04/2021 22:23:37
sherees: 1. itertools.zip_longest 09/04 23:23
sherees: 2. enumerate+break 09/04 23:23
Kitten1156: import numpy as np 09/04 23:24
Kitten1156: a = ["abcde","fgh","ijklm","nop","qrstiuv","wxyz"] 09/04 23:24
Kitten1156: b = np.chararray(a) 09/04 23:24
Kitten1156: np.char.ljust(b,4) 09/04 23:24
Kitten1156: #array(['abcd', 'fgh ', 'ijkl', 'nop ', 'qrst', 'w 09/04 23:24
Kitten1156: xyz'], dtype='<U4') 09/04 23:24
Kitten1156: b那行寫錯了..是array 09/04 23:29
Kitten1156: 再送兩句 09/04 23:33
Kitten1156: d = np.char.strip(c) #去空白 09/04 23:33
Kitten1156: e = d.tolist() #轉回list 09/04 23:33
s0914714: 不是用slice就好? 09/04 23:51
art1: from functools import partial 09/05 08:55
art1: import re 09/05 08:55
art1: ge = map(partial(re.match, '.{2}'), your_list) 09/05 08:56
art1: next(ge)[0] 就是你要的前幾個字,不過只適用於較短的字串 09/05 08:58
art1: 只是切分字串用到正規表達式感覺有點過頭... 09/05 09:03
s0914714: 你不iterate整個list怎麼有辦法抓出每個item的前兩位? 09/05 09:31
LP9527: 為啥不給馬兒吃草 09/05 18:25
lycantrope: 不iter只好recursive了嗎 w 09/05 22:43
sating00: 很好奇有什麼東西可以不跑迴圈就全部完成 09/06 00:53
ddavid: 可能要一開始資料結構就特殊設計了,把工做在insert那邊 09/06 16:16
ddavid: 雖然我這麼說,但還是沒想到真的就有比較好的方式 09/06 16:18
ddavid: 而且他還要求依輸入序輸出這點麻煩 09/06 16:19
ddavid: 如果是依照字典序之類的,就能用tree存了,取出頭幾個字就 09/06 16:21
ddavid: 真的可能不用完整的iterate 09/06 16:22