(这可能很简单,但是)我说这个输入是一个字符串:
"280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
我希望将每个坐标点分成不同的列表,每个x和y值,所以它们最终看起来像这样:
listX = [280.2, 323.1, 135.8, 142.9]
listY = [259.8, 122.5, 149.5, 403.5]
我需要这个能够以任何大小的字符串开头,提前谢谢!
答案 0 :(得分:0)
查看split字符串方法。它应该让你开始。
答案 1 :(得分:0)
您可以执行以下操作:
>>> a ="280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
>>> b = a.split(" ")
>>> b
['280.2,259.8', '323.1,122.5', '135.8,149.5', '142.9,403.5']
>>> c = [ x.split(',') for x in b]
>>> c
[['280.2', '259.8'], ['323.1', '122.5'], ['135.8', '149.5'], ['142.9', '403.5']]
>>> X = [ d[0] for d in c]
>>> X
['280.2', '323.1', '135.8', '142.9']
>>> Y = [ d[1] for d in c]
>>> Y
['259.8', '122.5', '149.5', '403.5']
答案 2 :(得分:0)
有一个神奇的方法调用str.split
,它给出一个字符串,用分隔符分割。
假设我们在变量s
中有字符串。
要按空格拆分并列出清单,我们会做
coords = s.split()
此时,将其放入列表的最简单方法是
listX = [float(sub.split(",")[0]) for sub in coords]
listY = [float(sub.split(",")[1]) for sub in coords]
答案 3 :(得分:0)
复制并粘贴它,它应该可以工作:
s_input = "280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
listX = [float(x.split(',')[0]) for x in s_input.split()]
listY = [float(y.split(',')[1]) for y in s_input.split()]
答案 4 :(得分:0)
这样可行。
my_string="280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
listX =[item.split(",")[0] for item in my_string.split()]
listY=[item.split(",")[1] for item in my_string.split()]
或
X_list=[]
Y_list=[]
for val in [item.split(",") for item in my_string.split()]:
X_list.append(val[0])
Y_list.append(val[1])
使用哪个版本可能取决于您的个人偏好和字符串的长度。
答案 5 :(得分:0)
您可以将zip
和split
的组合与列表理解结合使用:
s = "280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
l = zip(*[a.split(',') for a in s.split()])
这将返回2个元组的列表。
要获取列表,请在其上使用map
。
l = map(list, zip(*[a.split(',') for a in s.split()]))
l[0]
和l[1]
会有您的列表。
如果您的列表很大,请考虑使用itertools.izip()