gpt4 book ai didi

python - 为列表生成器结果分配不同的值

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:03 25 4
gpt4 key购买 nike

我正在使用列表生成器,如下所示。我想知道如何为各个列表生成器分配不同的文本或值。在示例代码中,我只能一次为所有列表生成器分配值。例如,我想为 v 分配,row1[3]="value 1",为 k,row1[ 3]="value 2" 对于 mrow1[3]="value 3"。 我怎样才能实现这一目标?

v = (item for item in propadd if item[0]==row1[8] and harversine(custx,custy,item[2],item[3])<1500)
k = (item for item in custadd if item[0]==row1[4])
m = (item for item in numlist if re.search(r"^[0-9]+(?=\s)",row1[0]) is not None and item[0]==re.search(r"^[0-9]+(?=\s)",row1[0]).group())
for gen in (v, k, m):
l = list(gen)
if len(l) == 1:
row1[1] = l[0][1]
row1[2] = l[0][2]
break

最佳答案

有几种不同的方法可以为不同的生成器分配附加值。最简单的方法是使用由生成器键入的字典或包含值的相同长度的迭代。此处显示了两种方法:

可迭代

v = (item for item in propadd if item[0]==row1[8] and harversine(custx,custy,item[2],item[3])<1500)
k = (item for item in custadd if item[0]==row1[4])
m = (item for item in numlist if re.search(r"^[0-9]+(?=\s)",row1[0]) is not None and item[0]==re.search(r"^[0-9]+(?=\s)",row1[0]).group())
extraValues = ('value 1', 'value 2', 'value3')
for ind, gen in enumerate((v, k, m)):
l = list(gen)
if len(l) == 1:
row1[1] = l[0][1]
row1[2] = l[0][2]
row1[3] = extraValues[ind]
break

字典

v = (item for item in propadd if item[0]==row1[8] and harversine(custx,custy,item[2],item[3])<1500)
k = (item for item in custadd if item[0]==row1[4])
m = (item for item in numlist if re.search(r"^[0-9]+(?=\s)",row1[0]) is not None and item[0]==re.search(r"^[0-9]+(?=\s)",row1[0]).group())
extraValues = {v: 'value 1',
k: 'value 2',
m: 'value3')
for gen in (v, k, m):
l = list(gen)
if len(l) == 1:
row1[1] = l[0][1]
row1[2] = l[0][2]
row1[3] = extraValues[gen]
break

您还可能有一些复杂的场景,其中额外的值可以由字典查找或元组索引之外的某些函数生成。

关于python - 为列表生成器结果分配不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com