我想知道如何構造一個字串,它從串列中獲取每個單詞的第一個字母。然后它從每個單詞等中取第二個字母。例如:輸入 --> my_list = ['good', 'bad', 'father'] 每個單詞都有不同的長度(但串列中的單詞可以具有相同的長度)輸出應該是:'gbfoaaodtdher'。
我試過了:
def letters(my_list):
string = ''
for i in range(len(my_list)):
for j in range(len(my_list)):
string = my_list[j][i]
return string
print(letters(['good', 'bad', 'father']))
我得到了:'gbfoaaodt'。
uj5u.com熱心網友回復:
這是一份很好的作業itertools.zip_longest:
from itertools import zip_longest
s = ''.join([c for x in zip_longest(*my_list) for c in x if c])
print(s)
或者more_itertools.interleave_longest:
from more_itertools import interleave_longest
s = ''.join(interleave_longest(*my_list))
print(s)
輸出:gbfoaaodtdher
使用的輸入:
my_list = ['good', 'bad', 'father']
uj5u.com熱心網友回復:
@mozway 的回答是最好的方法,但是如果你想按照你原來的方法去做,這就是方法
def letters(my_list):
string = ''
max_len = max([len(s) for s in my_list])
for i in range(max_len):
for j in range(len(my_list)):
if i < len(my_list[j]):
string = my_list[j][i]
return string
print(letters(['good', 'bad', 'father']))
輸出:gbfoaaodtdher
uj5u.com熱心網友回復:
我們也可以不用 zip_longest :
l = ['good', 'bad', 'father']
longest_string=max(l,key=len)
''.join(''.join([e[i] for e in l if len(e) > i]) for i in range(len(longest_string)))
#'gbfoaaodtdher'
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534268.html
標籤:Python循环
下一篇:如何跟蹤同一家公司內董事會的變動
