繁体   English   中英

Python:仅根据另一条件从列表中的一列中减去

[英]Python: Subtracting from only one column in a list based on another condition

因此,我有一个导入.txt文件并使用line.split()将其列组织到列表中的代码

基本上形式为list1 =(1,2,3,4,5,6,7,8)

list1中的最后一个值是我创建的新列表

total = list1[1]+list1[2]+list1[3]+list1[4]+list1[5]
Info = []
    if total > 650:
        info.append(1.0)
    if total < 650:
        info.append(2.0)

然后,我将其添加到list1的末尾

所以打印list1给我

(“ 031”,“ 97”,“ 108”,“ 113”,“ 48”,“ 217”,“ 14”,[2.0])

(“ 032”,“ 97”,“ 124”,“ 147”,“ 45”,“ 355”,“ 15”,[1.0])

(“ 033”,“ 140”,“ 145”,“ 175”,“ 50”,“ 446”,“ 14”,[1.0])

(“ 034”,“ 133”,“ 123”,“ 115”,“ 46”,“ 430”,“ 15”,[1.0])

(“ 035”,“ 107”,“ 92”,“ 136”,“ 45”,“ 278”,“ 13”,[1.0])

(“ 036”,“ 98”,“ 115”,“ 130”,“ 37”,“ 387”,“ 15”,[1.0])

(“ 037”,“ 117”,“ 69”,“ 131”,“ 34”,“ 238”,“ 12”,[2.0])

(“ 038”,“ 134”,“ 125”,“ 132”,“ 50”,“ 434”,“ 15”,[1.0])

(“ 039”,“ 125”,“ 116”,“ 178”,“ 50”,“ 433”,“ 15”,[1.0])

(“ 040”,“ 125”,“ 142”,“ 156”,“ 50”,“ 363”,“ 15”,[1.0])

(“ 041”,“ 77”,“ 51”,“ 68”,“ 45”,“ 219”,“ 15”,[2.0])

(“ 042”,“ 122”,“ 142”,“ 182”,“ 50”,“ 447”,“ 15”,[1.0])

(“ 043”,“ 103”,“ 123”,“ 102”,“ 46”,“ 320”,“ 15”,[1.0])

(“ 044”,“ 106”,“ 100”,“ 127”,“ 50”,“ 362”,“ 15”,[1.0])

(“ 045”,“ 125”,“ 110”,“ 140”,“ 50”,“ 396”,“ 15”,[1.0])

(“ 046”,“ 120”,“ 98”,“ 129”,“ 48”,“ 325”,“ 13”,[1.0])

(“ 047”,“ 89”,“ 70”,“ 80”,“ 46”,“ 302”,“ 14”,[2.0])

(“ 048”,“ 99”,“ 130”,“ 103”,“ 50”,“ 436”,“ 15”,[1.0])

(“ 049”,“ 100”,“ 87”,“ 148”,“ 17”,“ 408”,“ 13”,[1.0])

(“ 050”,“ 104”,“ 47”,“ 91”,“ 37”,“ 50”,“ 9”,[2.0])

我想知道的是如何编写一行代码,当line1 [6] = 13时从line1 [7]中减去.5,当其12时减去1,而当其11或更低时减去1.5

任何帮助将不胜感激!

line1[7]是一个列表,所以我假设您想从列表中的数字中减去。 像这样的事情应该做的工作:

x = line1[6]

if x <= 11:
    line1[7][0] -= 1.5
elif x == 12:
    line1[7][0] -= 1
elif x == 13:
    line1[7][0] -= 0.5

这样的东西? en,一行代码

line1[7][0] -= 1.5 if line1[6]<=11 else 0.5*(14-line1[6]) if line1[6]<=13 else 0

def convert_row(row):
    row[7][0] -= sorted([0.5,1.5,7-int(row[6])/2])[1]

list1 = [('031', '97', '108', '113', '48', '217', '14', [2.0]),
        ('032', '97', '124', '147', '45', '355', '15', [1.0])]
for x in list1:
     convert_row(x) 

看到您希望在“一行代码”中使用它,我将其简短了,没有其他说明。 基本上,我计算出与您的情况(11 12和13)匹配的7-int(row [6])/ 2,然后取该数字的中间值0.5和1.5来匹配其他所有情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM