我有两个列表,第一个列表保证只包含一个列表而不是第二个列表.我想知道创建一个新列表的最Pythonic方法,其中偶数索引值来自第一个列表,其奇数索引值来自第二个列表.
# example inputs
list1 = ['f', 'o', 'o']
list2 = ['hello', 'world']
# desired output
['f', 'hello', 'o', 'world', 'o']
Run Code Online (Sandbox Code Playgroud)
这有效,但并不漂亮:
list3 = []
while True:
try:
list3.append(list1.pop(0))
list3.append(list2.pop(0))
except IndexError:
break
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标呢?什么是最Pythonic方法?
vec = [[1,2,3], [4,5,6], [7,8,9]]
print [num for elem in vec for num in elem] <----- this
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
这是骗我的.
我的理解是ELEM名单从内部列表for elem in vic
我不太明白的用法num,并for num in elem在开始和结束.
python如何解释这个?
它看起来的顺序是什么?
假设我有一个列表:
l=['a','b','c']
Run Code Online (Sandbox Code Playgroud)
及其后缀列表:
l2 = ['a_1', 'b_1', 'c_1']
Run Code Online (Sandbox Code Playgroud)
我希望所需的输出为:
out_l = ['a','a_1','b','b_2','c','c_3']
Run Code Online (Sandbox Code Playgroud)
结果是上面两个列表的交错版本.
我可以编写常规for循环来完成这项工作,但我想知道是否有更多Pythonic方式(例如,使用list comprehension或lambda)来完成它.
我尝试过这样的事情:
list(map(lambda x: x[1]+'_'+str(x[0]+1), enumerate(a)))
# this only returns ['a_1', 'b_2', 'c_3']
Run Code Online (Sandbox Code Playgroud)
此外,对于一般情况需要做出哪些改变,即对于2个或更多列表,其中l2不一定是衍生物l?
给出一个清单
a = [0,1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到
b = [0,9,1,8,2,7,3,6,4,5]
Run Code Online (Sandbox Code Playgroud)
也就是说,产生一个新的列表,其中每个连续的元素交替地从原始列表的两边取出?
我有两个清单:
[a, b, c] [d, e, f]
我想:
[a, d, b, e, c, f]
在Python中执行此操作的简单方法是什么?
我想在python中交错4个相同长度的列表.
我搜索这个网站,只看到如何在python中交错2: 在Python中交换两个列表
可以为4个清单提供建议吗?
我有这样的名单
l1 = ["a","b","c","d"]
l2 = [1,2,3,4]
l3 = ["w","x","y","z"]
l4 = [5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
我想要列表
l5 = ["a",1,"w",5,"b",2,"x",6,"c",3,"y",7,"d",4,"z",8]
Run Code Online (Sandbox Code Playgroud) 我想直接从列表推导中返回一个包含两个列表的交错元素的列表 - 而不使用下一步来展示结果.可能吗?
alist1_temp=[1, 4,2]
alist2_temp=[3, 7,4]
t=[[x,y] for x,y in zip(alist1_temp, alist2_temp)]
Run Code Online (Sandbox Code Playgroud)
返回 [[1, 3], [4, 7],[2, 4]]
但是我怎样才能直接从列表理解中获得[1, 3, 4, 7, 2, 4]?
问题- 您必须找到从初始位置(1,1)到最终位置(N,M) [其中N是行数,M是列数]可以达到的方法数,假设:
注意:这里的数组索引是 1-indexed
一些条件:
示例测试用例:
>>> 3 3
. . .
. * .
. . .
>>> 8
Run Code Online (Sandbox Code Playgroud)
会有8种方式:
我的代码:
def ways(l):
# Don't know how to proceed
Testcases=int(input())
lst=[]
for i in range(Testcases):
N,M=input().split()
N,M=int(N),int(M)
for j in range(N):
s=input().split(" ",M)
lst.append(s)
ways(lst)
Run Code Online (Sandbox Code Playgroud)
我不知道如何继续。
在 matplotlib 中要创建一个步骤函数,您可以编写如下内容:
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [0.002871972681775004, 0.00514787917410944,
0.00863476098280219, 0.012003316194034325]
plt.step(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何使用 Bokeh 制作类似的图表?
假设我有多个 Python 列表。在多个 Python 列表的元素之间插入元素的一种快速方法是什么?
# Have
list1 = [1, 2, 3]
list2 = [10, 11, 12]
list3 = [20, 21, 22]
# Expect
list_between = [1, 10, 20, 2, 11, 21, 3, 12, 22]
Run Code Online (Sandbox Code Playgroud) 我有这个清单:
a = ["1 Monday","1 Wednesday","1 Friday"]
b = ["2 Tuesday","2 Thursday","2 Saturday"]
Run Code Online (Sandbox Code Playgroud)
我想将这些结合起来:
c = ["1 Monday", "2 Tuesday", "1 Wednesday", "2 Thursday", "1 Friday", "2 Saturday"]
Run Code Online (Sandbox Code Playgroud)
我想轮流做这个。因此,附加 a 的第一个元素和 b 的第一个元素,然后附加 a 的第二个元素和 b 的第二个元素,依此类推。
python ×11
list ×6
algorithm ×2
python-3.x ×2
arrays ×1
bokeh ×1
insert ×1
iteration ×1
performance ×1
turn-by-turn ×1