使用python

时间:2017-03-26 13:09:40

标签: python list elements

我有一个如下所示的列表,我对python语言相当新。我想消除列表中的那五个空元素(一个是第一个元素(在' 0'之前,其中四个在最后一个元素之后(' 1')) 你能问我怎么能这样做?感谢名单

  

['',' 0。',' 10.E-03',' 12.5E-03',& #39; 15.E-03',' 18.75E-03',' 22.5E-03',   ' 26.25E-03',' 30.E-03',' 33.75E-03',' 37.5E-03',& #39; 43.125E-03&#39 ;,   ' 51.5625E-03',' 61.5625E-03',' 71.5625E-03',' 81.5625E-03',   ' 91.5625E-03',' 101.563E-03',' 111.563E-03',' 121.563E-03',   ' 131.563E-03',' 141.563E-03',' 151.563E-03',' 161.563E-03',   ' 171.563E-03',' 181.563E-03',' 191.563E-03',' 201.563E-03',   ' 211.563E-03',' 221.563E-03',' 231.563E-03',' 241.563E-03',   ' 251.563E-03',' 261.563E-03',' 271.563E-03',' 281.563E-03',   ' 291.563E-03',' 301.563E-03',' 311.563E-03',' 321.563E-03',   ' 331.563E-03',' 341.563E-03',' 351.563E-03',' 361.563E-03',   ' 371.563E-03',' 381.563E-03',' 391.563E-03',' 401.563E-03',   ' 411.563E-03',' 421.563E-03',' 431.563E-03',' 441.563E-03',   ' 451.563E-03',' 461.563E-03',' 471.563E-03',' 481.563E-03',   ' 491.563E-03',' 501.562E-03',' 511.563E-03',' 521.563E-03',   ' 531.563E-03',' 541.563E-03',' 551.563E-03',' 561.563E-03',   ' 571.563E-03',' 581.563E-03',' 591.563E-03',' 601.563E-03',   ' 611.563E-03',' 621.563E-03',' 631.563E-03',' 641.563E-03',   ' 651.563E-03',' 661.563E-03',' 671.563E-03',' 681.563E-03',   ' 691.563E-03',' 701.563E-03',' 711.563E-03',' 721.563E-03',   ' 731.563E-03',' 741.563E-03',' 751.563E-03',' 761.563E-03',   ' 771.563E-03',' 781.563E-03',' 791.563E-03',' 801.563E-03',   ' 811.563E-03',' 821.563E-03',' 831.563E-03',' 841.563E-03',   &#;;;;;;;;;; &&;   ' 891.563E-03',' 901.563E-03',' 911.563E-03',' 921.563E-03',   ' 931.563E-03',' 941.563E-03',' 951.563E-03',' 961.563E-03',   ' 971.563E-03',' 981.563E-03',' 991.563E-03',' 1。',&#39 ;','','','']

3 个答案:

答案 0 :(得分:4)

my_list = ['', '0.', '10.E-03', '12.5E-03', '15.E-03', '18.75E-03', '22.5E-03', '26.25E-03', '30.E-03', '33.75E-03', '37.5E-03', '43.125E-03', '51.5625E-03', '61.5625E-03', '71.5625E-03', '81.5625E-03', '91.5625E-03', '101.563E-03', '111.563E-03', '121.563E-03', '131.563E-03', '141.563E-03', '151.563E-03', '161.563E-03', '171.563E-03', '181.563E-03', '191.563E-03', '201.563E-03', '211.563E-03', '221.563E-03', '231.563E-03', '241.563E-03', '251.563E-03', '261.563E-03', '271.563E-03', '281.563E-03', '291.563E-03', '301.563E-03', '311.563E-03', '321.563E-03', '331.563E-03', '341.563E-03', '351.563E-03', '361.563E-03', '371.563E-03', '381.563E-03', '391.563E-03', '401.563E-03', '411.563E-03', '421.563E-03', '431.563E-03', '441.563E-03', '451.563E-03', '461.563E-03', '471.563E-03', '481.563E-03', '491.563E-03', '501.562E-03', '511.563E-03', '521.563E-03', '531.563E-03', '541.563E-03', '551.563E-03', '561.563E-03', '571.563E-03', '581.563E-03', '591.563E-03', '601.563E-03', '611.563E-03', '621.563E-03', '631.563E-03', '641.563E-03', '651.563E-03', '661.563E-03', '671.563E-03', '681.563E-03', '691.563E-03', '701.563E-03', '711.563E-03', '721.563E-03', '731.563E-03', '741.563E-03', '751.563E-03', '761.563E-03', '771.563E-03', '781.563E-03', '791.563E-03', '801.563E-03', '811.563E-03', '821.563E-03', '831.563E-03', '841.563E-03', '851.563E-03', '861.563E-03', '871.563E-03', '881.563E-03', '891.563E-03', '901.563E-03', '911.563E-03', '921.563E-03', '931.563E-03', '941.563E-03', '951.563E-03', '961.563E-03', '971.563E-03', '981.563E-03', '991.563E-03', '1.', '', '', '', '']

你也可以使用:

my_list = [element for element in my_list if element]

# You could also use my_list = [element for element in my_list if not element == ''] 
# but checking for 'if element' works

或者,使用过滤器显示here

my_list = list(filter(None, my_list))

答案 1 :(得分:2)

有很多方法可以实现这一目标。为了更好地说明这个主题,我对所有方法进行了基准测试,以便了解每种方法的效率。我强烈建议使用方法1和2 。以下是按执行时间排序的示例:

1。过滤列表(推荐)

myList = list(filter(None, myList))

平均执行时间(以timeit()衡量): 0.037 - 0.045 s

2。列表理解

myList = [x for x in myList if x]

平均执行时间: 0.055 - 0.065 s

3。删除'' n次,其中n是列表中''的数量

c = myList.count('')
for i in range(c):
    myList.remove('')

平均执行时间: 0.088 - 0.1 s

注意: 这不是最好的方法,你应该使用推荐的方法

4。尽可能删除''

注意:此方法的灵感来自this answer,并不是最好的方法

while True:
    try: myList.remove('')
    except ValueError: break

平均执行时间: 0.097 - 0.11 s

答案 2 :(得分:0)

您可以使用列表理解:

[x  for x in original_list if x != ''] # To only remove empty string

或过滤:

filter(lambda x: x != '', original_list) # To only remove empty string