我只知道分割字符串并添加到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')
还有其他简单方法吗?
答案 0 :(得分:5)
我会去
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))
如果你真的想要一个元组。
答案 1 :(得分:2)
通常在尺寸/长度固定时(可能使用不同的类型)使用元组,并且当存在任意数量的相同类型的值时列出。
在这里使用tuple
代替list
的原因是什么?
元组样本:
(x, y)
)dict
键/值对的表示(例如("John Smith", 38)
)列表样本:
"foo|bar|buz"
已分割在|
s:["foo", "bar", "buz"]
)["-f", "/etc/fstab")
答案 2 :(得分:1)
另一种选择:
s = '012345'
map(''.join, zip(*[iter(s)]*2))
或者如果你需要一个元组:
tuple(map(''.join, zip(*[iter(s)]*2)))
这种将项目分组为n长组的方法直接来自zip()
的文档。
答案 3 :(得分:0)
Python 3
在此我假设OP将“简单”定义为不使用正则表达式。
给出列表["jim_bob", "slim_jim"]
中具有某些常见模式的字符串:
fileNameToTupleByUnderscore = lambda x: tuple(x.split('_'))
print(list(map(fileNameToTupleByUnderscore, ["jim_bob", "slim_jim"])))
返回
[('jim', 'bob'), ('slim', 'jim')]
请注意,如果要排除结尾的下划线,可以在strip('_')
之前添加split('_')
。