假设我有一个包含元组的列表。
类似这样的东西:
import tkinter as tk
def open_window():
list_of_tops.append(tk.Toplevel(root))
list_of_tops[-1].geometry("100x100")
def destroy_all():
for top_window in list_of_tops:
top_window.destroy()
root = tk.Tk()
root.geometry("500x500")
list_of_tops = [] # list to store any toplevel window.
tk.Button(root, text="open", command=open_window).pack(side=tk.TOP)
tk.Button(root, text="destroy all", command=destroy_all).pack(side=tk.BOTTOM)
root.mainloop()
有没有一种方法可以减去元组中的内容并将listnum变成:
listnum = [(18,12),(12,20)]
如您所见,它采用元组中最大的数字,然后将其相减。
答案 0 :(得分:3)
使用列表理解:-
>>> listnum = [(18,12),(12,20)]
>>> [(i-j) for i,j in listnum]
[6, -8]
>>> listnum = [(18,12),(12,20),(32,54),(2,43)]
>>> [(i-j) for i,j in listnum]
[6, -8, -22, -41]
并且您要求提供bigger number - smaller
;使用abs()
进行计算。
>>> listnum = [(18,12),(12,20),(32,54),(2,43)]
>>> [abs(i-j) for i ,j in listnum]
[6, 8, 22, 41]
答案 1 :(得分:2)
只需列表理解即可。
listnum = [(18,12),(12,20)]
listnum = [x[0] - x[1] for x in listnum]
# [6, -8]
编辑:要从较小的数字中减去较大的数字,可以改为执行类似的操作。
listnum = [max(x[0],x[1]) - min(x[0], x[1]) for x in listnum]
# [6, 8]
或者您可以对此更加厚脸皮
listnum = [abs(x[0] - x[1]) for x in listnum]
# [6, 8]
答案 2 :(得分:0)
您可以使用map
函数按照以下步骤进行操作:
listnum = [(18,12),(12,20)]
listnum = list(map(lambda x: abs(x[0]-x[1]),listnum))
print(listnum)
结果:
[6, 8]
答案 3 :(得分:0)
您可以遍历列表并将每个答案附加到新列表中,然后输出列表。
代码
y=[]
listnum = [(18,12),(12,20)]
for a,b in listnum:
x=abs(a-b)
y.append(x)
print (y)
输出
[6, -8]