在Python列表中连接元素

在Python列表中连接元素,python,arrays,list,sorting,Python,Arrays,List,Sorting,给定一个字符串,比如说s='135'和一个列表,比如说a=['1'、'2'、'3'、'4'、'5'、'6'、'7'],我如何将列表中同样位于's'(s的一个数字)中的值与其他元素分开并连接这些其他元素。本例中的输出应该是:A=['1'、'2'、'3'、'4'、'5'、'67']。 另一个例子: s='25'A=['1','2','3','4','5','6','7'] 输出:A=['1','2','34','5','67'] 有没有一种不用任何import语句就可以做到这一点的方法(这样我就可以

给定一个字符串,比如说
s='135'
和一个列表,比如说
a=['1'、'2'、'3'、'4'、'5'、'6'、'7']
,我如何将列表中同样位于's'(s的一个数字)中的值与其他元素分开并连接这些其他元素。本例中的输出应该是:
A=['1'、'2'、'3'、'4'、'5'、'67']
。 另一个例子:
s='25'
A=['1','2','3','4','5','6','7']
输出:
A=['1','2','34','5','67']

有没有一种不用任何import语句就可以做到这一点的方法(这样我就可以更好地理解Python以及它是如何工作的)

我是一个编程新手,因此任何帮助都将不胜感激


(请注意:这是我试图解决的更大问题的一部分)

您可以使用
itertools.groupby
键来测试您的号码的成员资格(转换为字符串)。这将根据元素是否在
s
中对其进行分组。然后,列表将以字符串的形式加入这些组

from itertools import groupby

A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)

["".join(v) for k,v in groupby(A, key=lambda c: c in s)]
# ['1', '2', '34', '5', '67']
编辑:艰难之路

您可以在列表上循环并跟踪最后看到的值。这将允许您测试是否需要将新字符串追加到列表中,或者将字符追加到最后一个字符串中。(但itertools要干净得多):


对@Mark的回答有点扭曲

我认为这会产生结果

from itertools import groupby

A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)

print(["".join(v) for k,v in groupby(A, key=lambda c: c in s) if str(k) not in s ])
# ['1', '2', '34', '5', '67']

“这是我试图解决的一个更大问题的一部分”
这是什么?到目前为止,这可能是一个。
s
是一个整数,而不是字符串。为什么在第一个示例中,
2
3
4
组合在一起<代码>2和
4
不在
s
中,但
3
在。很抱歉,我对问题的措辞不是很清楚。目的是将不在s中的所有元素(不是s的一个数字)组合在一起,并将同样出现在s中的元素分开。对不起,是的。我现在就改变它。谢谢你,马克,但是有没有一种方法可以不导入任何内容就完成这项工作?因为
groupby
要求在同一个键上对输入数组进行排序,所以不会有一个输入可以提供有趣的输出吗?@bgmn可能,但是itertools在标准库中,它可能是您应该用于类似这样的东西的。从标准库中导入东西并不丢脸,它们是Python的一部分。但这证明了他的第一个观点是错误的。如果s=135['1','2','3','4','5','67'][程序完成]正确,@高辛烷值,则输出为-这是OP在评论中所说的。该输出与编辑的问题相匹配。
str(k)
这里只是字符串
True
False
。为什么要测试它们是否在
s
中。。我以为它们是索引,既然结果是匹配的,我就认为它是对的。@MarkMeyer-Mark,你确定吗?那么我如何得到这个答案呢..你得到这个答案是因为
True
False
从来都不在
s
中。如果您的
始终为真,则使您的代码与我的代码相同。@MarkMeyer ohh现在有意义了,谢谢Mark。我会记下这个答案。
from itertools import groupby

A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)

print(["".join(v) for k,v in groupby(A, key=lambda c: c in s) if str(k) not in s ])
# ['1', '2', '34', '5', '67']