相关疑难解决方法(0)

在Python中使用自定义排序参数对列表进行排序的最佳方法是什么?

我有一系列列表如下:

li1 = ['a.1', 'b.9', 'c.8', 'd.1', 'e.2']
li2 = ['a.4', 'b.1', 'c.2', 'd.2', 'e.4']
Run Code Online (Sandbox Code Playgroud)

如何重新排列每个列表中的项目,以便第一项是"b.something"?对于上面的例子:

li1 = ['b.9', 'a.1', 'c.8', 'd.1', 'e.2']
li2 = ['b.1', 'a.4', 'c.2', 'd.2', 'e.4']
Run Code Online (Sandbox Code Playgroud)

在第一个项目之后维护订单并不重要.谢谢您的帮助.

python sorting list

6
推荐指数
2
解决办法
185
查看次数

如何在条件上拆分列表?

到目前为止,我没有找到按特定条件拆分列表的便捷方法,例如,我有一个记录列表:

 a = ((0,1),(1,0),(0,2),(1,0),(3,0),(4,0),(0,3),(1,5)....)
Run Code Online (Sandbox Code Playgroud)

我想将内容分成2个列表

alist = []
blist = []
for x in a:
    if x[0] == 0:
        alist.append(x)
    elif x[0] == 1:
        blist.append(x)
Run Code Online (Sandbox Code Playgroud)

不是很简洁.

写为列表理解:

aList = [x for x in a if x[0] == 0]
bList = [x for x in a if x[0] == 1]
Run Code Online (Sandbox Code Playgroud)

列表推导通常适用于阅读和性能,但在这种情况下,列表必须迭代两次.

有没有更好的方法来完成这项工作?

python

5
推荐指数
2
解决办法
2958
查看次数

python 列表推导式中的 if-else

是否可以为以下 python 代码编写列表推导式:

for str in range(0,len(mixed_content)):
    if (mixed_content[str].isdigit()):
        num_list.append(mixed_content[str])
    else:
        string_list.append(mixed_content[str])
Run Code Online (Sandbox Code Playgroud)

我们可以在列表推导式中使用 else 块吗?我尝试为上述代码编写列表推导式:

num_list , string_list = [   mixed_content[str]  for str in range(0,len(mixed_content)) if(mixed_content[str].isdigit()) else ]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension python-2.7 python-3.x

2
推荐指数
1
解决办法
854
查看次数

按标准拆分列表

假设我有一个数字列表,我想将这个列表分成两个子列表:一个用于奇数,另一个用于平均.

evens, odds = [], []
for e in numbers:
    if e % 2 == 0:
        evens.append(e)
    else:
        odds.append(e)
Run Code Online (Sandbox Code Playgroud)

我想知道在保持相同的复杂程度的同时,是否存在针对此问题的单线程.

我尝试使用itertools.groupby但是列表需要先订购,所以我要实现一个O(2n)而不是O(n):

def is_even(n):
    return n % 2 == 0

lst = sorted(lst, key=is_even)
grouper = itertools.groupby(lst, key=is_even)
lst1, lst2 = [list(v) for k, v in grouper]
Run Code Online (Sandbox Code Playgroud)

python list

2
推荐指数
1
解决办法
149
查看次数

Python,基于x的拆分坐标列表

我有一个坐标列表,我需要根据它们的x值将它们分成两半.像这样的东西:

l = [(0, 0), (1, 0), (2, 0), (3, 0), (0, 1), (1, 1), (2, 1), (3, 1)]
left = []
right = []
for i in l:
    if i[0] < 2:
        left.append(i)
    else:
        right.append(i)

print(left)
print(right)
Run Code Online (Sandbox Code Playgroud)

输出:

[(0, 0), (1, 0), (0, 1), (1, 1)]
[(2, 0), (3, 0), (2, 1), (3, 1)]
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

python list

0
推荐指数
1
解决办法
994
查看次数

将列表分成两部分 - Python

对于以下代码:

print("Welcome to the Atomic Weight Calculator.")
compound = input("Enter compund: ")
compound = H5NO3
lCompound = list(compound)
Run Code Online (Sandbox Code Playgroud)

我想从列表中创建两个列表lCompund.我想要一个字符列表和另一个数字列表.所以我可能有这样的事情:

n = ['5' , '3']
c = ['H' , 'N' , 'O']
Run Code Online (Sandbox Code Playgroud)

有人可以提供简单的解决方案吗?

python split alpha list numeric

0
推荐指数
1
解决办法
201
查看次数

Pythonic方式循环纯粹基于副作用的理解

在不关心返回值的情况下执行完整生成器理解的最pythonic方法是什么,而操作纯粹是基于副作用的?

一个例子是基于这里讨论的谓词值来拆分列表.想到编写生成器理解是很自然的

split_me = [0, 1, 2, None, 3, '']
a, b = [], []
gen_comp = (a.append(v) if v else b.append(v) for v in split_me)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我能想出的最佳解决方案是使用 any

any(gen_comp)
Run Code Online (Sandbox Code Playgroud)

然而,对于没有看过这种模式的人来说,这并不是很明显.是否有更好的方法来循环完全理解而不保留内存中的所有返回值?

python list-comprehension generator

0
推荐指数
2
解决办法
482
查看次数