我有一个导入数据的脚本,我将这些数据存储在嵌套列表中
我有一个列表,它指示每个子列表中有多少元素将被丢弃
我该怎么做
我知道如何手动操作,但我想能够上传一个csv文件到我的程序,然后让它运行
我已经在csv文件中运行了两次相同的数据行,试图让我更容易修复,所以
starting_index = [203,203]
但原则上,这可能有100个左右不同数量的元素
然后我有一系列嵌套列表。我的起始索引中的元素数与每个列表中的子列表数匹配,因此目前每个嵌套列表中只有两个子列表
我想定义一个函数,我可以调用它来排列每个列表。我知道我的代码有什么问题,但我不知道如何使它工作
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个元素,但原则上这些数字会改变
我一直在尝试使用enumerate,也许在这里不合适
我怎样才能解决这个问题
谢谢
编辑:一些示例数据:
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]]
理想结果: 列表一=[[67,89,44],[23,67,23,67,88,45,67233567,41,56.4],[67,29,556345,23,89,45,6,8,3,4,5876]]
我刚刚看到了我正在看的del声明,我还将看看slice建议。谢谢
编辑:我试过这个解决方案,但没能成功
我试过了,但是当我把一些测试数据放进去的时候,我得到了原来不变的列表
如何访问输出
我的测试脚本:
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_index
和original_list
之间并行循环,所以使用zip()
您可以使用切片
value[i:]
来获取从索引开始的列表部分,而不是循环相关问题 更多 >
编程相关推荐