使用 python 消除列表中的空元素
eliminating empty elements in a list with python
我有一个如下所示的列表,我对 python 语言还很陌生。我想消除列表中的那五个空元素(一个是第一个元素(在“0”之前,其中四个在最后一个元素(“1”)之后)
请问我怎么能这样做?谢谢
['', '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 = ['', '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))
您可以使用列表理解:
[x for x in original_list if x != ''] # To only remove empty string
或过滤器:
filter(lambda x: x != '', original_list) # To only remove empty string
有很多方法可以做到这一点。为了更好地说明该主题,我对所有方法进行了基准测试,以便您了解每种方法的效率。我强烈建议使用 方法 1 和 2。以下是示例,按执行时间排序:
1。过滤列表(推荐)
myList = list(filter(None, myList))
平均执行时间(用timeit()
测量):0.037 - 0.045秒
2。列表理解
myList = [x for x in myList if x]
平均执行时间:0.055 - 0.065 秒
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 秒
我有一个如下所示的列表,我对 python 语言还很陌生。我想消除列表中的那五个空元素(一个是第一个元素(在“0”之前,其中四个在最后一个元素(“1”)之后) 请问我怎么能这样做?谢谢
['', '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 = ['', '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))
您可以使用列表理解:
[x for x in original_list if x != ''] # To only remove empty string
或过滤器:
filter(lambda x: x != '', original_list) # To only remove empty string
有很多方法可以做到这一点。为了更好地说明该主题,我对所有方法进行了基准测试,以便您了解每种方法的效率。我强烈建议使用 方法 1 和 2。以下是示例,按执行时间排序:
1。过滤列表(推荐)
myList = list(filter(None, myList))
平均执行时间(用timeit()
测量):0.037 - 0.045秒
2。列表理解
myList = [x for x in myList if x]
平均执行时间:0.055 - 0.065 秒
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 秒