python - 将列表值合并到 1 个字符串中
问题描述
我有这样的清单:
subsets = ["T10", "T12", "T13", "A15", "T23"]
我需要遍历这个列表,检查 T 后跟 A,如果发现它合并 T & A 即
这是我需要的新列表:
newset = ["T10", "T12", "T13, A15", "T23"]
我试图弄清楚如何遍历列表并检查最左边的值。我只需要一个 {left char of string of next list item} 的表达式——我想!
for i in range(len(subsets)):
if {left char of string for next list item} = "A":
newset.append(subset[i]+", "+ subset[i+1])
i+=1
else:
newset.append(subset[i])
解决方案
从您的项目构建一个新列表,并检查该列表中的最后一个项目是否以 开头T
,当前是否以 开头A
。如果是这样,请替换新列表中的最后一项:
it = iter(subsets)
result = [next(it)]
for elem in it:
if elem[:1] == 'A' and result[-1][:1] == 'T':
# preceding element is T.., this is A.., combine into a single string
result[-1] = f'{result[-1]}, {elem}'
else:
result.append(elem)
我使用iter()
andnext()
有效地用第一个元素填充输出列表,并且使我们不必测试是否result
至少有一个元素。
演示:
>>> subsets = ["T10", "T12", "T13", "A15", "T23"]
>>> it = iter(subsets)
>>> result = [next(it)]
>>> for elem in it:
... if elem[:1] == 'A' and result[-1][:1] == 'T':
... # preceding element is T.., this is A.., combine into a single string
... result[-1] = f'{result[-1]}, {elem}'
... else:
... result.append(elem)
...
>>> result
['T10', 'T12', 'T13, A15', 'T23']
注意:这也会将连续 A*
元素合并到前面的T
元素中,因此[..., "T13", "A15", "A16", "T17", ...]
结果为[..., "T13, A15, A16", "T17", ...]
.
推荐阅读
- sed - SED:如何替换文本块(
至 ) 在一个文件中包含另一个文件的内容? - javascript - 如何设置 JSON ISO-8601 日期时间格式时区
- javascript - 在参数中使用解构时未捕获的 typeError
- reactjs - 如何在提交表单之前编辑表单 json 数据?
- python - 我需要一些帮助来理解这个错误
- reactjs - 注销时重置 Apollo 存储和经过身份验证的查询
- python - 使用 nginx 作为我的服务器并运行一个简单的烧瓶应用程序。我可以配置 nginx 来提供烧瓶和非烧瓶网址吗?
- python - 我的 For 循环只经过一次。(我正在使用 Python)
- tensorflow - ubantu18.04 tensorflow2.2.0 和 CUDA=10.1 的服务器有 4 个 GPU,但是运行 yolo-keras 程序时只使用了一个 GPU
- java - Java Zookeeper API 奇怪的 ZNode 行为。无法正确删除 ZNode。它有意想不到的结果