我一直在努力制作元组列表并找到每个元组的平均值。
myList = [(1,2,3),(4,12,6)]
def GS(myList):
for miniList in myList:
r = miniList[0]
g = miniList[1]
b = miniList[2]
GS = round((r+g+b)/3,2)
miniList = list(miniList)
miniList[0] = GS
miniList[1] = GS
miniList[2] = GS
miniList = tuple(miniList)
return myList
print(GS(myList))
我的名单是[(1,2,3),(4,12,6)]
我应该获取每个元组的平均值,并替换三个元组
输出:[(2.0,2.0,2.0),(7.33,7.33,7.33)]
答案 0 :(得分:3)
您可以使用列表推导。下面是一个示例,该示例避免通过bttn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = bttn1.getText().toString();
Intent i=new Intent(DetailSecreen.this,CodSecreen.class);
startActivity(i);
}
});
和add_custom_command(TARGET ${projectName} POST_BUILD COMMAND cmd /c ${PROJECT_CONFIGURATION}/shadercopy.bat)
迭代器两次计算每个元组的长度。
map
如果希望舍入小数,可以使用:
zip
答案 1 :(得分:2)
myList = [(1,2,3),(4,12,6)]
[(round(sum(e)/len(e)),)*len(e) for e in myList]
# [(2.0, 2.0, 2.0), (7.33, 7.33, 7.33)]
答案 2 :(得分:1)
问题在于,在您的for
循环中,您编写:
for miniList in myList:
# ...
miniList = tuple(miniList)
您在这里似乎想通过引用分配。但这在Python中是不可能的(或者至少不能使用这种语法)。
但是,您可以使用例如索引,并执行以下操作:
def GS(myList):
for idx, miniList in enumerate(myList):
r = miniList[0]
g = miniList[1]
b = miniList[2]
GS = round((r+g+b)/3,2)
miniList = list(miniList)
miniList[0] = GS
miniList[1] = GS
miniList[2] = GS
myList[idx] = tuple(miniList)
return myList
话虽如此,这是一种相当复杂的方法。例如,您可以使用:
def GS(myList):
for idx, miniList in enumerate(myList):
miniList[idx] = (round(sum(miniList)/len(miniList), 2),) * len(miniList)
return myList
这也适用于包含多于或少于三个元素的元组。我们要做的是计算sum(..)
的{{1}},然后将其除以miniList
的{{1}}以得到平均值。然后,像原始函数一样使用len(..)
函数。
接下来,我们用miniList
将其包装在单元组中,然后将其乘以元组的长度,得到一个元组,在其中重复单例中的元素元组round(.., 2)
次。
话虽这么说,通常 Pythonic 构造一个 new 列表,然后更改一个现有列表。由于其他变量可能会引用此列表,因此现在也会进行更新。