簡體   English   中英

從嵌套列表中刪除初始項

[英]removing initial items from nested lists

我有一個導入數據的腳本,並將它們存儲在嵌套列表中。

我有一個列表,指示要丟棄每個子列表中的多少個元素。

我該怎么做呢?

我知道如何手動執行此操作,但是我希望能夠將一個csv文件上傳到我的程序中,然后使其運行。

我已經在csv文件中兩次運行同一行數據,嘗試使其更易於修復,所以我有

starting_index = [203,203]

但原則上可以有100個左右不同數量的元素。

然后,我有一系列的嵌套列表。 我的starting_index中的元素數量與每個列表中的子列表數量匹配,因此,目前每個嵌套列表中只有兩個子列表。

我想定義一個函數,可以調用它來削減每個列表。 我知道我的代碼有什么問題,但是我不知道如何使它工作。

def index_filter(original_list, new_list):
    for i in starting_index:
            print(i)
            for index, value in enumerate(original_list):
                    for item,element in enumerate(value):
                            if item >= i:
                                    new_list[index].append(element)

我現在意識到這是行不通的,問題是

for i in starting_index:

因為當它完成起始索引中的第一個元素時,它將繼續進行下一個並追加更多數據。 它不會出錯,但是不會執行我想要的操作。 在這種情況下,我只想從子列表1中刪除前203個元素,從子列表2中刪除前203個元素,但是原則上,這些數字將更改。

我一直嘗試使用枚舉,也許在這里不合適。

我該如何解決?

謝謝

編輯:一些示例數據:

starting_index = [2,1,3]
list_one = [[15,34,67,89,44], [44,23,67,88,45,67,233,567,41,56.4],[45,6734,5,67,29,55,6345,23,89,45,6,8,3,4,5,876]] 

理想結果:list_one = [[67,89,44],[23,67,23,67,88,45,67,233,567,41,56.4],[67,29,55,6345,23,89,45,6 ,8,3,4,5,876]]

我剛剛遇到了我正在查看的del語句,並且還將查看切片建議。 謝謝

編輯:我嘗試了解決方案,但我無法使其正常工作。

我嘗試了一下,但是當我將一些測試數據放入時,我得到了原始的未更改列表。

如何訪問輸出?

我的測試腳本:

original_list=[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]]

starting_index=[3,6]

def index_filter(original_list, starting_index):
    return [value[i:] for i, value in zip(starting_index, original_list)]

index_filter(original_list, starting_index)

print(index_filter)

print(original_list)

輸出一條奇怪的消息和原始的未更改列表

<function index_filter at 0x039CC468>
[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38]]

謝謝

您需要並行遍歷starting_indexoriginal_list ,因此請使用zip()

您可以使用切片value[i:]從索引開始獲取列表的一部分,而不是循環。

def index_filter(original_list, starting_index):
    return [value[i:] for i, value in zip(starting_index, original_list)]

original_list=[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]]

starting_index=[3,6]

new_list = index_filter(original_list, starting_index)
print(new_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM