python - 如何根据条件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)))
谁能帮我解决这个问题?
谢谢!
解决方案
尝试这个,
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']]
希望这对你有帮助!
推荐阅读
- machine-learning - 无法从图层“conv1/7x7_s2/bn”复制参数 0 权重;形状不匹配。咖啡错误
- nativescript - 每次更改都重新加载 iOS 模拟器
- blockchain - 如何通过示例在corda中使用现金状态?
- python - Matplotlib 坚持加载到 conda env
- android - Android In App Purchases:用户可以一次购买同一产品的多个副本
- php - Laravel post Api 用作没有 csfr 令牌的网络路由
- java - 地图列表排序:需要一次根据两个值对地图列表进行排序
- asp.net-mvc - ASP.NET 样板以法语显示十进制错误
- angular - Jasmine/Karma - 第一个测试用例总是失败
- ios - 如何使用 FCM 为富文本通知创建有效负载