我是編程新手。我有一個串列理解問題。我需要將一個串列劃分為大小為 5 的元組,并且我的代碼運行良好,但是如果我輸入了一個串列串列,我不知道如何在串列理解中插入一個雙回圈。我希望有人可以幫助我。這是我的代碼:
big_list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
x = 5
bot = [tuple(big_list1[i: i x])for i in range(0, len(big_list1), x)]
這是輸出:
bot=[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)]
但是,如果我有這樣的串列:
my_list=[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
我想要這個:
res=[[(1, 2, 3, 4, 5),(6, 7, 8, 9, 10),(11, 12, 13, 14, 15)], [(1, 2, 3, 4, 5),(6, 7, 8, 9, 10)], [(1, 2, 3, 4, 5)]]
我很困惑,因為回圈中有“范圍”,我不知道如何進行嵌套回圈。
uj5u.com熱心網友回復:
定義為函式:
def split_in_tuples(input_list, tuple_length):
return [tuple(input_list[i: i tuple_length]) for i in range(0, len(input_list), tuple_length)]
然后你可以像這樣使用:
big_list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
split_in_tuples(big_list1, 5)
給
[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)]
然后對于您的串列串列,您可以:
my_list=[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
[split_in_tuples(sublist, 5) for sublist in my_list]
這使:
[[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)], [(1, 2, 3, 4, 5), (6, 7, 8, 9, 10)], [(1, 2, 3, 4, 5)]]
uj5u.com熱心網友回復:
如果你想使用串列理解,你可以這樣做(給出my_list并x來自所述問題):
[[tuple(l[i: i x]) for i in range(0, len(l), x)] for l in my_list]
uj5u.com熱心網友回復:
如果你真的想使用串列理解,你可以按如下方式進行:
[[tuple(elem[i: i x]) for i in range(0, len(elem), x)] for elem in my_list]
uj5u.com熱心網友回復:
也許最終的代碼不是那么“酷”,無論如何你的代碼離解決方案不遠,你必須添加外部回圈(在我的解決方案中,我使用了相同命名的相同示例)也許這可能有用
my_list=[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
x = 5
[[tuple(big_list1[i: i x])for i in range(0, len(big_list1), x)] for big_list1 in my_list]
# [[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)],
[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10)],
[(1, 2, 3, 4, 5)]]
這就是你想要的。
暗示
更一般地說,嵌套 lc 需要一點提示。假設您需要嵌套 2 個串列理解,第一種方法是:
c = ['ab']
[a for a in b for b in c]
但這不起作用,NameError: name 'b' is not defined
因為python的決議順序,
但以正確的方式重新排序,從右到左
[a for b in c for a in b]
按預期運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375890.html
