Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用Tab从一个列表中删除两个列表_Python_Python 3.x_List_Split_Python 2.x - Fatal编程技术网

Python使用Tab从一个列表中删除两个列表

Python使用Tab从一个列表中删除两个列表,python,python-3.x,list,split,python-2.x,Python,Python 3.x,List,Split,Python 2.x,我有一份清单: data = ['Other stuff',186.797\t-48', '187.272\t-48', '187.747\t-48', '188.222\t-45', '188.697\t-43', '189.172\t6', '189.646\t-23', '190.121\t12',...] 如何创建两个列表,一个在“/t”之前有值,另一个在“/t”之后有值 但是,我只想从data[1]到len(data),跳过第一个值,因为它只是描述性文本 例如: L1

我有一份清单:

data = ['Other stuff',186.797\t-48',
 '187.272\t-48',
 '187.747\t-48',
 '188.222\t-45',
 '188.697\t-43',
 '189.172\t6',
 '189.646\t-23',
 '190.121\t12',...]
如何创建两个列表,一个在“/t”之前有值,另一个在“/t”之后有值

但是,我只想从data[1]到len(data),跳过第一个值,因为它只是描述性文本

例如:

L1 = [186.797,...,190.121]
L2 = [-48,..., 12]
您可以使用正则表达式:

import re
s = ['186.797\t-48',
 '187.272\t-48',
 '187.747\t-48',
 '188.222\t-45',
 '188.697\t-43',
 '189.172\t6',
 '189.646\t-23',
 '190.121\t12']

L1, L2 = map(list, zip(*[[float(re.findall('[\d\.]+', i)[0]), int(re.findall('[\-\d]+$', i)[0])] for i in s]))
输出:

[186.797, 187.272, 187.747, 188.222, 188.697, 189.172, 189.646, 190.121]
[-48, -48, -48, -45, -43, 6, -23, 12]
您可以使用正则表达式:

import re
s = ['186.797\t-48',
 '187.272\t-48',
 '187.747\t-48',
 '188.222\t-45',
 '188.697\t-43',
 '189.172\t6',
 '189.646\t-23',
 '190.121\t12']

L1, L2 = map(list, zip(*[[float(re.findall('[\d\.]+', i)[0]), int(re.findall('[\-\d]+$', i)[0])] for i in s]))
输出:

[186.797, 187.272, 187.747, 188.222, 188.697, 189.172, 189.646, 190.121]
[-48, -48, -48, -45, -43, 6, -23, 12]

一种简单、清晰的方法是使用列表理解,并描述您希望从何处获取所有数据。您可以使用
.split(“\t”)
将每个元素拆分为一个包含两个值的元组,并按选项卡进行拆分。然后使用
float
int
转换所需的元素

# Iterate over the list and grab everything before the \t and convert to a float
L1 = [float(val.split("\t")[0]) for val in values]
#: [186.797, 187.272, 187.747, 188.222, 188.697, 189.172, 189.646, 190.121]

# Iterate over the list and grab everything after the \t and convert to an int
L2 = [int(val.split("\t")[1]) for val in values]
#: [-48, -48, -48, -45, -43, 6, -23, 12]

一种简单、清晰的方法是使用列表理解,并描述您希望从何处获取所有数据。您可以使用
.split(“\t”)
将每个元素拆分为一个包含两个值的元组,并按选项卡进行拆分。然后使用
float
int
转换所需的元素

# Iterate over the list and grab everything before the \t and convert to a float
L1 = [float(val.split("\t")[0]) for val in values]
#: [186.797, 187.272, 187.747, 188.222, 188.697, 189.172, 189.646, 190.121]

# Iterate over the list and grab everything after the \t and convert to an int
L2 = [int(val.split("\t")[1]) for val in values]
#: [-48, -48, -48, -45, -43, 6, -23, 12]

使用列表理解并使用
.split()

编辑:如果您需要新列表中的数字值,请将这些值强制转换为
float()
int()


使用列表理解并使用
.split()

编辑:如果您需要新列表中的数字值,请将这些值强制转换为
float()
int()


这是一个未正确解析的TSV吗?我用来生成值的程序只是吐出数据。左边是波长,右边是时间。我只是不知道如何在python中将它分成两个列表,因为每个值的长度都不同。
L1,L2=zip(*(s.split('\t')表示数据中的s))
会让你达到目的……甚至,
L1,L2=zip(*map(str.split,data))
这是一个解析不正确的TSV吗?我用来生成值的程序只是吐出数据。左边是波长,右边是时间。我只是不知道如何在python中将它分成两个列表,因为每个值的长度都不同。
L1,L2=zip(*(s.split('\t')表示数据中的s))
会让你达到目的……甚至,
L1,L2=zip(*map(str.split,data))
我想Brian希望输出是整数是的,他的问题没有任何引用我想Brian希望输出是整数是的,他的问题没有任何引用为什么需要所有正则表达式?@pstatix已经有一段时间了,但事后看来,我可能会使用
str.split
或singe
re.split
。然而,
re.findall
使生成的列更加容易
zip
。为什么需要所有正则表达式?@pstatix已经有一段时间了,但事后看来,我可能会使用
str.split
或singe
re.split
。但是,
re.findall
使生成的列更容易
zip