python语句中合并两个列表并且将列表中的数安大小排列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python语句中合并两个列表并且将列表中的数安大小排列相关的知识,希望对你有一定的参考价值。

假设原来的两个list是L1,L2.

1,合并:L = L1+L2
2,排序sorted(L) 默认从小到大排列,如果要从大到小排列就是sorted(L,reverse=True)
合起来就是
L=sorted(L1+L2, reverse=True)
参考技术A >>> L1 = [1,3,5,7]
>>> L2 = [2,4,6,8]

>>> L1.extend(L2)
>>> L1
[1, 3, 5, 7, 2, 4, 6, 8]
>>> L1.sort()
>>> L1
[1, 2, 3, 4, 5, 6, 7, 8]
>>>

合并 Python 列表中的一些列表项

【中文标题】合并 Python 列表中的一些列表项【英文标题】:Merge some list items in a Python List 【发布时间】:2010-11-11 16:29:08 【问题描述】:

假设我有一个这样的列表:

[a, b, c, d, e, f, g]

如何修改该列表使其看起来像这样?

[a, b, c, def, g]

我更希望它直接修改现有列表,而不是创建新列表。

【问题讨论】:

合并的依据是什么? 什么是a、b等(即什么数据类型)?就目前而言,将其输入 Python 解释器会出错,因为这些是未绑定的名称。 您是否始终希望将列表中的这些项目连接起来,或者您希望能够选择以后的位置和数量? 【参考方案1】:

合并应该在什么基础上进行?你的问题比较模糊。另外,我假设 a, b, ..., f 应该是字符串,即 'a', 'b', ..., 'f'。

>>> x = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> x[3:6] = [''.join(x[3:6])]
>>> x
['a', 'b', 'c', 'def', 'g']

查看sequence types 上的文档,特别是mutable sequence types。也许还有string methods。

【讨论】:

【参考方案2】:

这个例子很模糊,但也许是这样的?

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
items[3:6] = [''.join(items[3:6])]

它基本上做了一个拼接(或assignment to a slice)操作。它删除第 3 到第 6 项并在其位置插入一个新列表(在本例中是一个包含一项的列表,它是已删除的三个项的串联。)

对于任何类型的列表,您都可以这样做(对所有项目使用 + 运算符,无论它们是什么类型):

items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
items[3:6] = [reduce(lambda x, y: x + y, items[3:6])]

这利用了reduce 函数和lambda 函数,该函数基本上使用+ 运算符将项目添加在一起。

【讨论】:

这对字符串列表非常有用。如果元素不是字符串,则需要使用 ''.join() 以外的其他内容 你说得对,我添加了一个使用reduce 的示例,它适用于支持+ 运算符的任何类型的项目。除非 OP 扩展他的问题,否则我不能做更多的事情。 他的问题对于字符串以外的任何东西都没有任何意义。 支持使用 reduce 的通用解决方案 - 尽管这个问题似乎只对字符串有意义,但将列表的所有元素相互附加的通用解决方案是一个很好的解决方案。【参考方案3】:

只是变种

alist=["a", "b", "c", "d", "e", 0, "g"]
alist[3:6] = [''.join(map(str,alist[3:6]))]
print alist

【讨论】:

【参考方案4】:

当然@Stephan202 给出了一个非常好的答案。我提供了一个替代方案。

def compressx(min_index = 3, max_index = 6, x = ['a', 'b', 'c', 'd', 'e', 'f', 'g']):
    x = x[:min_index] + [''.join(x[min_index:max_index])] + x[max_index:]
    return x
compressx()

>>>['a', 'b', 'c', 'def', 'g']

您还可以执行以下操作。

x = x[:min_index] + [''.join(x[min_index:max_index])] + x[max_index:]
print(x)

>>>['a', 'b', 'c', 'def', 'g']

【讨论】:

【参考方案5】:

我的心灵感应能力不是特别好,但这是我认为你想要的:

def merge(list_of_strings, indices):
    list_of_strings[indices[0]] = ''.join(list_of_strings[i] for i in indices)
    list_of_strings = [s for i, s in enumerate(list_of_strings) if i not in indices[1:]]
    return list_of_strings

我应该注意,因为它可能并不明显,它与其他答案中提出的不同。

【讨论】:

以上是关于python语句中合并两个列表并且将列表中的数安大小排列的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中把两个列表的各项分别合并为列表

在python中如何将两个list合并成一个list,不用for语句

合并两个重叠列表的Pythonic方法,保留顺序

python合并多个EXCEL表

python如何合并两个列表?

Python怎么将列表中的数加起来