相关疑难解决方法(0)

查找两个列表的索引最大值

假设我有 2 个列表:

L1 = [2,4,1,6]
L2 = [1,5,2,3]
Run Code Online (Sandbox Code Playgroud)

输出应该是一个新列表,其中包含根据 L1 或 L2 的位置找到的最大数字。

示例输出:

L3 = [2, 5, 2, 6]
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

python list

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

列表理解等效于并行两个列表上的映射

据我所知,一个列表参数map()可以被列表推导所取代.例如

map(lambda x : x**2, range(5))
Run Code Online (Sandbox Code Playgroud)

可以替换为

[x**2 for x in range(5)]
Run Code Online (Sandbox Code Playgroud)

现在,我将如何为两个并行列表执行类似的操作.换句话说,我有一行代码具有以下模式:

map(func, xs, ys)
Run Code Online (Sandbox Code Playgroud)

其中func()有两个参数.

如何使用列表理解做同样的事情?

python functional-programming list-comprehension python-3.x

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

一个列表理解中的两个for循环

def get_plus(x,y):
    return str(x) + y


seq_x = [1, 2, 3, 4]
seq_y = 'abc'
print([get_plus(x,y) for x in seq_x for y in seq_y])

#result // ['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c', '4a', '4b', '4c']
Run Code Online (Sandbox Code Playgroud)

但是,我想要这样的结果

 #result // ['1a', '2b', '3c']
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python list

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

如何将 LineString 分割为线段

我的数据集由 a 组成LineString,我想过滤掉该 的各个线段LineString。更准确地说,是每一个街道段。

到目前为止,我已经从数据集中提取了各个点并将它们保存在单独的列表中。此外,我想再次收集这些点并从中创建单独的 LineStrings 以将它们存储到地理数据框中。数据具有以下形式:

LINESTRING (3275.284016199762 340555.8579582386, 3241.504528076811 340504.1348617533, 3245.415803206172 340501.457084205, 3280.414559049542 340552.7138220053, 3285.19053022
Run Code Online (Sandbox Code Playgroud)

我的问题是我必须LineString为每次迭代创建并显式保存一个单独的。谁能帮我这个?有更好的方法吗?

from shapely.geometry import Point, LineString

#Loop over LineString and gather Points
c=[]

for i in range(0,end):
    c.append(Point(route1.coords[i]))


iterator=len(c)
max=len(c)-1

#Loop to store LineStrings - got stuck here
for i in np.arange(0,iterator):
    if i<max:
        LineString([c[i], c[i+1]]).wkt

    else:
        break;

Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

Linestring(Point A, Point B)  
Linestring(Point B, Point C)  
Linestring(Point C, Point D)  
...  
Linestring(Point Y, Point Z)
Run Code Online (Sandbox Code Playgroud)

python postgis shapely geopandas

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

如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

Stack Overflow 上有很多关于这个一般主题的问答,但它们要么质量很差(通常是初学者的调试问题暗示的),要么以其他方式错过了目标(通常是不够通用)。至少有两种极其常见的方法会使幼稚的代码出错,初学者从关于循环的规范中获益更多,而不是从将问题作为拼写错误或关于打印所需内容的规范中获益。所以这是我尝试将所有相关信息放在同一个地方。

假设我有一些简单的代码,可以对一个值进行计算x并将其分配给y

y = x + 1

# Or it could be in a function:
def calc_y(an_x):
    return an_x + 1
Run Code Online (Sandbox Code Playgroud)

现在我想重复计算 的许多可能值x。我知道for如果我已经有要使用的值列表(或其他序列),我可以使用循环:

xs = [1, 3, 5]
for x in xs:
    y = x + 1
Run Code Online (Sandbox Code Playgroud)

while或者,如果有其他逻辑来计算值序列,我可以使用循环x

def next_collatz(value):
    if value % 2 == 0:
        return value // 2
    else:
        return 3 * value + 1

def collatz_from_19():
    x = 19
    while x != 1:
        x …
Run Code Online (Sandbox Code Playgroud)

python iteration list-comprehension

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

什么是Pythonic方法来获取两个列表元素的所有可能组合的元组列表?

假设我有两个不同大小的列表

a = [1, 2, 3]
b = ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

什么是Pythonic方法来获取c一个元素a和一个元素的所有可能组合的元组列表b

>>> print c
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]
Run Code Online (Sandbox Code Playgroud)

元素的顺序c无关紧要.

具有两个for循环的解决方案是微不足道的,但它似乎并不特别是Pythonic.

python list

4
推荐指数
2
解决办法
452
查看次数

如何在Python 3中比较两个字符串中的单个字符

我正在尝试比较两个不同字符串的第一个字符(依此类推),以根据这些结果形成一个新字符串.这是我尝试过的,但它将每个列表的每个元素相互比较.

def compare(a,b):
    s = ""
    for x in a:
        for y in b:
            if x == y:
                s+=str(x)
            else:
                s+=str(y)
Run Code Online (Sandbox Code Playgroud)

这似乎是一个简单的问题,但我被卡住了.

python string python-3.x

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

为每个列表项调用不同的函数

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

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

以及这样的函数列表:

[a, b, c, d]
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来获得这个输出?有类似的东西zip,但功能和参数?

[a(1), b(2), c(3), d(4)]
Run Code Online (Sandbox Code Playgroud)

python

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

List comprehension同时迭代两个变量

是否有可能使用列表推导来迭代两个变量同时增加两个循环的位置.见下面的例子:

a = [1,2,3,4,5]

b = [6,7,8,9,10]

c = [i+j for i in a for j in b] # This works but the output is not what it would be expected.
Run Code Online (Sandbox Code Playgroud)

预期输出是c = [7, 9, 11, 13, 15](来自b的第n个元素的第n个元素)

谢谢.

python python-2.7 python-3.x

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

迭代一个列表元组

我有一个列表元组。元组中的每个列表都具有相同数量的元素。如何在 for 循环中迭代它

前任:

tupleList = ([1,2,3], ['label1', 'label2', 'label3'])
for (val, label) in <something>:
    print val, label
Run Code Online (Sandbox Code Playgroud)

应该输出:

1, label1
2, label2
3, label3
Run Code Online (Sandbox Code Playgroud)

注意:这个元组列表可以包含两个以上的列表。

PS:对于那些选择此重复的人,请检查正确解决方案的响应。它不同于遍历两个单独的列表。

python loops tuples

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