相关疑难解决方法(0)

Pythonic方式以交替的方式组合两个列表?

我有两个列表,第一个列表保证只包含一个列表而不是第二个列表.我想知道创建一个新列表的最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方法?

python

75
推荐指数
8
解决办法
5万
查看次数

python list comprehension double for

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如何解释这个?
它看起来的顺序是什么?

python list-comprehension

54
推荐指数
4
解决办法
3万
查看次数

在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

python performance list-comprehension list

30
推荐指数
3
解决办法
3256
查看次数

从交替的边循环列表

给出一个清单

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)

也就是说,产生一个新的列表,其中每个连续的元素交替地从原始列表的两边取出?

python iteration algorithm list

27
推荐指数
7
解决办法
2128
查看次数

在Python中交叉列表

我有两个清单:
[a, b, c] [d, e, f]
我想:
[a, d, b, e, c, f]

在Python中执行此操作的简单方法是什么?

python list

22
推荐指数
2
解决办法
2万
查看次数

交错4列出相同长度的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)

python arrays python-3.x

22
推荐指数
5
解决办法
1497
查看次数

直接从列表推导中获取列表(没有嵌套列表)

我想直接从列表推导中返回一个包含两个列表的交错元素的列表 - 而不使用下一步来展示结果.可能吗?

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]

python list-comprehension list

6
推荐指数
1
解决办法
74
查看次数

矩阵右下角有任意大小障碍物的方法数向右或向下跳过

问题- 您必须找到从初始位置(1,1)到最终位置(N,M) [其中N是行数,M是列数]可以达到的方法,假设:

  1. 您可以向下移动任意数量的步骤。
  2. 您可以向右移动任意数量的步骤。

注意:这里的数组索引是 1-indexed

一些条件:

  • 你永远不能离开网格。
  • 您不能忽略这些条件。
  • 第一个单元格 (1,1) 和最后一个单元格 (N,M) 不包含障碍物。
  • 一个空闲单元用 表示障碍物用*表示。

示例测试用例:

>>> 3 3
    . . .
    . * .
    . . .

>>> 8
Run Code Online (Sandbox Code Playgroud)

会有8种方式:

  • (1,1),(1,2),(1,3),(2,3),(3,3)
  • (1,1),(1,2),(1,3),(3,3)
  • (1,1),(1,3),(2,3),(3,3)
  • (1,1),(1,3),(3,3)
  • (1,1),(2,1),(3,1),(3,2),(3,3)
  • (1,1),(3,1),(3,2),(3,3)
  • (1,1),(2,1),(3,1),(3,3)
  • (1,1),(3,1),(3,3)

我的代码:

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)

我不知道如何继续。

python algorithm dynamic-programming

6
推荐指数
1
解决办法
487
查看次数

如何使用 Bokeh 绘制阶跃函数?

在 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 bokeh

3
推荐指数
1
解决办法
3363
查看次数

如何在多个 Python 列表的元素之间插入元素?

假设我有多个 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)

python list insert

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

如何在Python中逐个将两个列表放在一起

我有这个清单:

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 list concatenation python-3.x turn-by-turn

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