[問題] string in list 抓出每個字串的前n個char

作者: qoo33456 (巷口涼麵攤)   2021-09-04 22:03:24
最簡單的想法是
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個
作者: ckc1ark (偽物)   2021-09-04 22:13:00
這兩個輸出就不一樣了 要不要先確定一下output format
作者: sherees (ShaunTheSheep)   2021-09-04 23:23:00
1. itertools.zip_longest2. enumerate+break
作者: Kitten1156 (Frank_kitten)   2021-09-04 23:24:00
import numpy as npa = ["abcde","fgh","ijklm","nop","qrstiuv","wxyz"]b = np.chararray(a)np.char.ljust(b,4)#array(['abcd', 'fgh ', 'ijkl', 'nop ', 'qrst', 'wxyz'], dtype='<U4')b那行寫錯了..是array再送兩句d = np.char.strip(c) #去空白e = d.tolist() #轉回list
作者: s0914714 (YA)   2021-09-04 23:51:00
不是用slice就好?
作者: art1 (人,原來不是人)   2021-09-05 08:55:00
from functools import partialimport rege = map(partial(re.match, '.{2}'), your_list)next(ge)[0] 就是你要的前幾個字,不過只適用於較短的字串只是切分字串用到正規表達式感覺有點過頭...
作者: s0914714 (YA)   2021-09-05 09:31:00
你不iterate整個list怎麼有辦法抓出每個item的前兩位?
作者: LP9527 (ㄊㄇ抽菸都去)   2021-09-05 18:25:00
為啥不給馬兒吃草
作者: lycantrope (阿寬)   2021-09-05 22:43:00
不iter只好recursive了嗎 w
作者: sating00 (sating00)   2021-09-06 00:53:00
很好奇有什麼東西可以不跑迴圈就全部完成
作者: ddavid (謊言接線生)   2021-09-06 16:16:00
可能要一開始資料結構就特殊設計了,把工做在insert那邊雖然我這麼說,但還是沒想到真的就有比較好的方式而且他還要求依輸入序輸出這點麻煩如果是依照字典序之類的,就能用tree存了,取出頭幾個字就真的可能不用完整的iterate

Links booklink

Contact Us: admin [ a t ] ucptt.com