我希望有人可以帮助我以下内容。我有一个名单:' List'。我有一个名为X的列表。 现在我想检查List中每行第三列中的值是否小于(<)X或等于/大于X.如果值较小,我想在第6列添加0并且如果等于/大于1则为1。对于每个X,我希望将答案添加到列表的上一列。所以在这种情况下有4个X值。因此,结果应该将4列添加到List。我的下面的代码可能表明我很不成熟,我希望你能帮助我。提前谢谢。
List = [(3,5,6,7,6),(3,5,3,2,6),(3,6,1,0,5)]
X= [1,4,5,6]
for item in X:
for number in row[3] for row in List:
count = 0
if number < item:
List[5+count].append(0)
count += 1
return List
else:
List[5+count].append(1)
count += 1
return List
return List
答案 0 :(得分:2)
首先,您应该知道tuples
(括号括起的列表)是不可变的,因此一旦定义它们就无法改变它们。在您的案例中使用list
更好(由[]
括起来。)
List = [[3,5,6,7,6],[3,5,3,2,6],[3,6,1,0,5]]
X= [1,4,5,6]
for item in X: # loop on elements of X
for subList in List: # loop on 'rows' in List
if subList[2] < item: # test if 3rd element is smaller than item in X
subList.append(0); # push 0 to the end of the row
else:
subList.append(1); # push 1 to the end of the row
答案 1 :(得分:1)
您的缩进是关闭的(您应该从wp_create_user
声明开始取消所有内容。
您不能for
到append
(tuples
变量中的行实际上是List
)。
由于您不在函数中,tuples
不执行任何操作。
由于索引从0开始,因此您应该将return
用于第3行。
row[2]
中的元素数量多于X
中的行数。
话虽如此,您也可以使用列表推导来实现这一点。这是一个做同样事情的单行:
List
将打印
>>> List = [(3,5,6,7,6),(3,5,3,2,6),(3,6,1,0,5)]
>>> X = [1,4,5,6]
>>> print [tuple(list(t[0])+[0]) if t[0][2] < t[1] else tuple(list(t[0]) + [1]) for t in zip(List, X)]
答案 2 :(得分:1)
List = [(3,5,6,7,6),(3,5,3,2,6),(3,6,1,0,5)]
X= [1,4,5,6]
scores = []
for item in List:
scores.append(tuple(map(lambda x: 0 if item[2] < x else 1, X)))
result = []
for item, score in zip(List, scores):
result.append(item + score)
print(result)
# [(3, 5, 6, 7, 6, 1, 1, 1, 1), (3, 5, 3, 2, 6, 1, 0, 0, 0), (3, 6, 1, 0, 5, 1, 0, 0, 0)]
答案 3 :(得分:1)
List = [[3,5,6,7,6],[3,5,3,2,6],[3,6,1,0,5]]
X= [1,4,5,6]
elems = [row[3] for row in List]
for i in range(len(elems)):
for x in X:
if elems[i] < x:
List[i].append(0)
else:
List[i].append(1)
print List
如果您不使用函数,则无法使用return。
答案 4 :(得分:0)
同意塞尔丘克
[编辑#1:谢谢@Rawing,我输错了&gt; as&lt;]
以下简化了AlmostGr的版本: -
List = [[3, 5, 6, 7, 6], [3, 5, 3, 2, 6], [3, 6, 1, 0, 5]]
X = [1, 4, 5, 6]
for num in X:
for item in List:
if num > item[2]:
item.append(0)
else:
item.append(1)
它运行X中的所有元素并产生输出:
[[3, 5, 6, 7, 6, 1, 1, 1, 1], [3, 5, 3, 2, 6, 1, 0, 0, 0], [3, 6, 1, 0, 5, 1, 0, 0, 0]]
答案 5 :(得分:0)
return
。它退出函数,return
指定的值返回给函数。
所以你不能在你的程序中使用它。
在列表中,每一行实际上都称为元组。元组没有append
函数,因此您无法使用它添加到行的末尾。
此外,您不能在一行中有两个for循环。 (这不是问题,因为我们只需要一个来实现你的输出)
我修改了你的代码,使它看起来很相似,所以你更容易理解。
List = [(3,5,6,7,6),(3,5,3,2,6),(3,6,1,0,5)]
X= [1,4,5,6]
for item in X:
n = 0
for row in list:
if row[3] < item:
list[n] = list[n] + (0,)
else:
list[n] = list[n] + (1,)
n = n+1
print List
你需要添加(0,)或(1,)以表明它是一个元组添加。 (否则python会认为你正在添加一个带整数的元组)