将字符串分割并添加到`tuple`中
我知道只有两种简单的方法可以把一个字符串分割开,然后放进一个tuple
里。
import re
1. tuple(map(lambda i: i, re.findall('[\d]{2}', '012345'))) # ('01', '23', '45')
2. tuple(i for i in re.findall('[\d]{2}', '012345')) # ('01', '23', '45')
还有其他简单的方法吗?
4 个回答
1
还有一个其他的选择:
s = '012345'
map(''.join, zip(*[iter(s)]*2))
或者如果你需要一个元组的话:
tuple(map(''.join, zip(*[iter(s)]*2)))
把东西分成n个长度的小组的方法,直接来自于zip()
的文档说明。
2
通常情况下,当你需要的元素数量和类型是固定的,就会用元组(tuple);而当你需要的元素数量不确定,且类型相同的时候,就会用列表(list)。
那么在这里,为什么要用tuple
而不是list
呢?
元组的例子:
- 在一个固定维度的空间中的坐标(比如二维坐标:
(x, y)
) - 字典中的键值对表示(例如:
("John Smith", 38)
) - 在计算表达式之前就知道元组中有多少个元素的情况
- ...
列表的例子:
- 分割后的字符串(比如:
"foo|bar|buz"
按照|
分割后变成:["foo", "bar", "buz"]
) - 命令行参数(例如:
["-f", "/etc/fstab"]
) - 在计算表达式之前通常不知道列表中有多少个元素的情况
- ...
6
我会选择
s = "012345"
[s[i:i + 2] for i in range(0, len(s), 2)]
或者
tuple(s[i:i + 2] for i in range(0, len(s), 2))
如果你真的想要一个元组的话。