如何在Python中实现特殊的差异?

如何在Python中实现特殊的差异?,python,string,list,Python,String,List,我有一个Python列表,其中包含 ['A,1,2,2,4','B,1,3,2,4','C,1,2,3,4'] 如何获得以下各项的输出: ['A,2,2'] ['B,3,2'] ['C,2,3'] ['A,4,1', 'B,3,1', 'C,6,3', 'D,1,3'] 但是,相同的代码行应该能够对变量列表执行相同的操作,例如: ['A,4,2,1,5', 'B,3,2,1,5', 'C,6,2,3,5', 'D,1,2,3,5'] 产出: ['A,2,2'] ['B,3,2

我有一个Python列表,其中包含

['A,1,2,2,4','B,1,3,2,4','C,1,2,3,4']
如何获得以下各项的输出:

['A,2,2']
['B,3,2']
['C,2,3']
['A,4,1',
 'B,3,1',
 'C,6,3',
 'D,1,3']
但是,相同的代码行应该能够对变量列表执行相同的操作,例如:

['A,4,2,1,5',
 'B,3,2,1,5',
 'C,6,2,3,5',
 'D,1,2,3,5']
产出:

['A,2,2']
['B,3,2']
['C,2,3']
['A,4,1',
 'B,3,1',
 'C,6,3',
 'D,1,3']

获得结果的一个简单方法是使用基于、、的字符串拆分,如下所示

>>> my_list = ['A,1,2,2,4','B,1,3,2,4','C,1,2,3,4']
>>> from operator import itemgetter
>>> [",".join(itemgetter(0, 2, 3)(items.split(","))) for items in my_list]
['A,2,2', 'B,3,2', 'C,2,3']
>>> [",".join([j[0], j[2], j[3]]) for j in (d.split(",") for d in my_list)]
['A,2,2', 'B,3,2', 'C,2,3']
或者形成一个生成器表达式,它通过基于的拆分来提供字符串,然后只拾取索引0、2和3处的元素,并将所有元素连接起来,如下所示

>>> my_list = ['A,1,2,2,4','B,1,3,2,4','C,1,2,3,4']
>>> from operator import itemgetter
>>> [",".join(itemgetter(0, 2, 3)(items.split(","))) for items in my_list]
['A,2,2', 'B,3,2', 'C,2,3']
>>> [",".join([j[0], j[2], j[3]]) for j in (d.split(",") for d in my_list)]
['A,2,2', 'B,3,2', 'C,2,3']

这里,d.split,因为我的列表中的d被称为生成器表达式,它给出了一个新的字符串列表,该列表在每次迭代中根据、进行拆分。

我不确定这里的动机是什么/您需要代码的通用性如何。这适用于您的特定实例:

[[seq[:2] + seq[4:7]] for seq in ['A,1,2,2,4','B,1,3,2,4','C,1,2,3,4']]

这实际上是将所需的子字符串映射到数组中的每个字符串上。如果不知道要实现什么目标,很难说得更多。

您确定输入列表不是这样的['A'、'1'、'2'、'2'、'4']、['B'、'1'、'3'、'2'、'4']、['C'、'1'、'2'、'3'、'4']?将每个元素拆分成一个数组,获取所需的元素,再将其连接回一个字符串,并制作一系列结果。我还并没有找到任何可靠的方法来尝试。我已经尝试过福特耶的方法,但没有成功。这是因为它依赖于第0项、第2项和第3项的不同。我的列表将是动态的,但是长度将是相同的。对不起,一般来说,我需要这个编程方法是动态的,这意味着列表条目将需要是动态的,但是每个条目的长度将是完全相同的。谢谢你的快速回复!你说的动态是什么意思。中间的两个,不管列表的大小是多少,在ListNoDice中都不一定是第二个和第三个点,我应该指出我的数据不一定是零个、第二个和第三个不同的条目。无论如何,你可以用新的索引创建一个itemgetter对象,并将它们与listsSo一起使用,我给出的例子是我试图解决的复杂生物信息学问题的一个简单例子。我正在分析组成一种细菌蛋白质的氨基酸。所以A,B,C是一种蛋白质,数字就是氨基酸的频率。因此,上面的示例可能适用于1个蛋白质比较,但是下一个比较(python将在循环中进行)可能类似于['a','5','3','1','7'],['B','1','3','1','4'],['C','1','3','1','4']]