我有一系列列表如下:
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)
在第一个项目之后维护订单并不重要.谢谢您的帮助.
到目前为止,我没有找到按特定条件拆分列表的便捷方法,例如,我有一个记录列表:
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 代码编写列表推导式:
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) 假设我有一个数字列表,我想将这个列表分成两个子列表:一个用于奇数,另一个用于平均.
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) 我有一个坐标列表,我需要根据它们的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)
有更快的方法吗?
对于以下代码:
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)
有人可以提供简单的解决方案吗?
在不关心返回值的情况下执行完整生成器理解的最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 ×7
list ×4
alpha ×1
generator ×1
numeric ×1
python-2.7 ×1
python-3.x ×1
sorting ×1
split ×1