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

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

如何將字符串列表與整數列表列表相結合

如何將字符串列表與整數列表列表相結合

慕桂英546537 2021-08-14 20:58:51
我想結合以下字符串列表和列表的整數列表:lst = ['A',        'A',        'B',        'C',        'C',        'D',        'D',        'D',....]lst_of_lst = [[9, 10, 11, 12],              [54, 55, 56],              [72, 73, 74, 75, 76],               [1, 2, 3, 4, 5],              [98, 99, 100],              [13, 14],              [21, 22, 23],              [27, 28, 29, 30], ....]從而返回元組列表:lst_tups = [('A', 9), ('A', 10), ('A', 11), ('A', 12),            ('A', 54), ('A', 55), ('A', 56),             ('B', 72), ('B', 73), ('B', 74), ('B', 75), ('B', 76),            ('C', 1), ('C', 2), ('C', 3), ('C', 4), ('C', 5),             ('C', 98), ('C', 99), ('C', 100),             ('D', 13), ('D', 14),            ('D', 21), ('D', 22), ('D', 23),            ('D', 27), ('D', 28), ('D', 29), ('D', 30), ....]這 2 個列表具有相同數量的列表元素(在上面的測試用例中 - 8)。不幸的是,由于lst.我嘗試了以下方法,它僅適用于 in 中的每個子列表的第一個元素,lst_of_lst并對中的每個字符串重復lst:empty_test_combo = []for x in helix_chain_id:    for y in helix_seq_res_num_ranges:        empty_test_combo += (zip(x, y))我也試過:lst_tups = []for x in lst:    for y in lst_of_lst:        for z in y:            lst_tups.append(zip(x, [z]))這似乎是最有希望的選擇。它返回一個正確組合lst字符串和lst_of_lst整數列表的元組列表,但只是部分組合。
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

您嘗試使用的方式似乎存在誤解zip。


zip(list1, list2)是一個迭代器。當您對其進行迭代時,您會得到元組:第一個由 的第一項list1和 的第一項組成list2,依此類推。


您在這里要做的是將 的zip(lst, lst_of_lst)每個元素lst與 的相應子列表配對lst_of_lst。從每一對中,您可以生成所需的輸出。


您可以使用列表理解來做到這一點:


lst = ['A', 'A', 'B', 'C', 'C', 'D', 'D', 'D',]


lst_of_lst = [[9, 10, 11, 12],

              [54, 55, 56],

              [72, 73, 74, 75, 76], 

              [1, 2, 3, 4, 5],

              [98, 99, 100],

              [13, 14],

              [21, 22, 23],

              [27, 28, 29, 30],]



out = [(item1, item2) for item1, sublist in zip(lst, lst_of_lst) for item2 in sublist]


print(out)

# [('A', 9), ('A', 10), ('A', 11), ('A', 12), ('A', 54), ('A', 55), ('A', 56), 

#  ('B', 72), ('B', 73), ('B', 74), ('B', 75), ('B', 76), ('C', 1), ('C', 2), ('C', 3), ('C', 4), ('C', 5),

#  ('C', 98), ('C', 99), ('C', 100), ('D', 13), ('D', 14), ('D', 21), ('D', 22), ('D', 23), 

#  ('D', 27), ('D', 28), ('D', 29), ('D', 30)]

或者,用循環編寫,正如您所嘗試的:


out = []

for item1, sublist in zip(lst, lst_of_lst):

    for item2 in sublist:

        out.append((item1, item2))


查看完整回答
反對 回復 2021-08-14
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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