首页 > 解决方案 > 如何根据条件python对列表进行切片并存储为多个列表

问题描述

我有超过 1000 个字符串的列表,我想根据条件将列表分割成子列表。例如,我有看起来像的列表。

my_list = ['pdf', 'csv', 'csv','csv','txt','txt','txt','txt','pdf','pdf','csv','txt','txt','pdf', 'csv', 'csv','pdf','csv','txt','txt' ]

分成多个子列表。切片的条件是单词作为集合重复的时间。每个子列表都应该增加排序集,在实际情况下我有超过 1000 个字符串。

所以最终结果看起来像

lst_1=['pdf', 'csv','txt']    
lst_2=['pdf', 'csv','txt']
lst_3=['pdf', 'csv']
lst_4=['pdf', 'csv','txt']
.
.
so on...

我有一些像下面这样给出错误的东西。

arrays = [[my_list[0]]]
for i in range(1, len(my_list)):
    if 'pdf','csv','txt' in i:
        arrays[len(arrays)-1].append(my_list[i])
print(sorted(set(arrays)))

谁能帮我解决这个问题?

谢谢!

标签: pythonpython-3.xlistarraylistslice

解决方案


尝试这个,

my_list = ['pdf', 'csv', 'csv','csv','txt','txt','txt','txt','pdf','pdf','csv','txt','txt','pdf', 'csv', 'csv','pdf','csv','txt','txt' ]

counter = [0,0,0]
counter[0]=my_list.count('pdf')
counter[1]=my_list.count('csv')
counter[2]=my_list.count('txt')

l2=[]
lists = []
pdf,csv,txt=counter

for i in range(max(counter)):

    l2=[]
    if pdf>=0:
        l2.append('pdf')
        pdf-=1
    if csv>=0:
        l2.append('csv')
        csv-=1
    if txt>=0:
        l2.append('txt')
        txt-=1

    lists.append(l2)

print(lists)

输出:

[['pdf', 'csv', 'txt'], ['pdf', 'csv', 'txt'], ['pdf', 'csv', 'txt'], ['pdf', 'csv', 'txt'], ['pdf', 'csv', 'txt'], ['pdf', 'csv', 'txt'], ['csv', 'txt'], ['csv', 'txt']]

希望这对你有帮助!


推荐阅读