【发布时间】:2016-07-13 10:27:05
【问题描述】:
我想使用 python 对列表或数组进行排序以达到以下目的: 假设我的初始列表是:
example_list = ["retg_1_gertg","fsvs_1_vs","vrtv_2_srtv","srtv_2_bzt","wft_3_btb","tvsrt_3_rtbbrz"]
我想将第一个下划线后面有 1 的所有元素放在一个列表中,将 2 放在一个列表中,依此类推。所以结果应该是:
sorted_list = [["retg_1_gertg","fsvs_1_vs"],["vrtv_2_srtv","srtv_2_bzt"],["wft_3_btb","tvsrt_3_rtbbrz"]]
我的代码:
import numpy as np
import string
example_list = ["retg_1_gertg","fsvs_1_vs","vrtv_2_srtv","srtv_2_bzt","wft_3_btb","tvsrt_3_rtbbrz"]
def sort_list(imagelist):
# get number of wafers
waferlist = []
for image in imagelist:
wafer_id = string.split(image,"_")[1]
waferlist.append(wafer_id)
waferlist = set(waferlist)
waferlist = list(waferlist)
number_of_wafers = len(waferlist)
# create list
sorted_list = []
for i in range(number_of_wafers):
sorted_list.append([])
for i in range(number_of_wafers):
wafer_id = waferlist[i]
for image in imagelist:
if string.split(image,"_")[1] == wafer_id:
sorted_list[i].append(image)
return sorted_list
sorted_list = sort_list(example_list)
可行,但它确实很尴尬,并且如果列表很大,它会涉及许多 for 循环,这会减慢一切。
有没有更优雅的方式使用 numpy 或任何东西?
感谢您的帮助。谢谢。
【问题讨论】:
标签: list python-2.7 sorting numpy