这并不能完全回答问题,但是除非您正在尝试参加一些代码高尔夫球比赛,否则我希望您能遵循以下内容。这很简单明了-仅因为代码可以放在一行中并不能使其变得更好。
for i in x:
v[i] -= 10
,
我认为您需要:
v = [i-10 if idx in x else i for idx,i in enumerate(v)])
print(v)
输出:
[-3,-8,5,-9]
,
可能没有太多理由在作业op。的左侧进行列表理解,
此外,修改分配操作。但是尽管如此,我还是想构建这个。
所以问题是我如何通过索引集修改某些元素
在具有列表理解的较长列表中(没有任何列表副本或使用显式cycle语句)。
我只能使用exec()
函数通过“自写”代码来实现此解决方案。
首先,我显示一个简单的赋值,具有相同的值:
# Let the index set and the "long" list be:
>>> x={0,2,4}
>>> v=[0]*10
>>> str(tuple("v["+str(i)+"]" for i in x))+"="+str(len(x)*(1,))
"('v[0]','v[2]','v[4]')=(1,1,1)"
# So I needed to change ("'" to "") at the left side before I could execute it.
>>> str(tuple("v["+str(i)+"]" for i in x)).replace("'","")+"="+str(len(x)*(1,))
'(v[0],v[2],v[4])=(1,1)'
# Put it into `exec()` function.
>>> exec(str(tuple("v["+str(i)+"]" for i in x)).replace("'",)))
>>> v
[1,0]
现在,我展示了如何根据x集(这是我的问题)将list元素减少1:
>>> s1=str(tuple("v["+str(i)+"]-=1" for i in x))
>>> s1
"('v[0]-=1','v[2]-=1','v[4]-=1')"
# Now I used the REG module for more efficient character replacement.
>>> import re as r
>>> r.sub(r"\(|\)|'","",s1).replace(",",";")
v[0]-=1; v[2]-=1; v[4]-=1'
# Now put them together:
>>> exec(r.sub(r"\(|\)|'",str(tuple("v["+str(i)+"]-=1" for i in x))).replace(",";"))
>>> v
[-1,-1,0] # if v was 10*[0]
,
您可以尝试列表理解:
SELECT A.[AGE],A.[SALARY],A.[GENDER],A.[DATEOBIRTH],A.[CITY],B.[TEST1],C.[TEST2]
FROM [tbl_PR_AGE_VALIDATION_RULE] AS A
LEFT JOIN [tbl_PR_PAGE_VALIDATION_RULE] AS B ON B.ENTITY_ID = A.ENTITY_ID
LEFT JOIN [tbl_PR_CITY_VALIDATION] AS C ON C.ENTITY_ID = B.ENTITY_ID
,
我认为以下是您需要的
[v[i]-10 if i in x else v[i] for i in range(len(v))]
[-3,-9]
本文链接:https://www.f2er.com/3103378.html