以某种方式拆分字符串

Split the string in a certain way

提问人:Дмитрий Насонов 提问时间:8/28/2023 最后编辑:mozwayДмитрий Насонов 更新时间:8/28/2023 访问量:36

问:

我有一个字符串:

50 5 10 4 48 34

其中每个值对应于以下表示法方案:

x1 y1 x2 y2 x3 y3

也就是说,这意味着:

x1 = 50
y1 = 5
etc.

在输入时,一个以空格分隔的数字字符串被写入我的变量,我想从中获取一个列表,其中存储坐标的元组以逗号分隔,即:

[(50, 5), (10, 4), (48, 34)]

请告诉我该怎么做?

python-3.x 列表 元组

评论


答:

1赞 Alicia Stone 8/28/2023 #1

试试这个 -

input_string = "50 5 10 4 48 34"
numeric_values = input_string.split()  

coordinates = [(int(numeric_values[i]), int(numeric_values[i + 1])) for i in range(0, len(numeric_values), 2)]
print(coordinates)

评论

0赞 Дмитрий Насонов 8/28/2023
如果检查编写的代码,将出现错误:列表索引超出范围
1赞 mozway 8/28/2023 #2

从 python 3.12 开始,您可以在拆分字符串上使用 itertools.batched 方法:

from itertools import batched

s = '50 5 10 4 48 34'
out = list(batched(map(int, s.split()), 2))

对于以前的版本,这个迭代器技巧总是有效的:

s = '50 5 10 4 48 34'

i = map(int, s.split())
out = list(zip(i, i))

# or as a one-liner for python ≥ 3.8
out = list(zip((i:=map(int, s.split())), i))

输出:[(50, 5), (10, 4), (48, 34)]