动态布尔python列表
这是一个非常基本的例子。我想保留一个变量/标志列表,但我知道列表是不可变的。在下面的示例中,我可以简单地将一个新元组(以日志类型的方式)附加到HasMoustach,但是列表HasMoustach将继续扩展 我有3个问题: 如何替换列表中某个元组中的元素(请参见下面示例中的注释)-例如更改包含sam和sarah的Hasthastuch的元组中的bole an? 知道列表是不可变的,这是一种好的做法吗? 是否有另一种/更干净的方法来保存有限的标志列表动态布尔python列表,python,list,Python,List,这是一个非常基本的例子。我想保留一个变量/标志列表,但我知道列表是不可变的。在下面的示例中,我可以简单地将一个新元组(以日志类型的方式)附加到HasMoustach,但是列表HasMoustach将继续扩展 我有3个问题: 如何替换列表中某个元组中的元素(请参见下面示例中的注释)-例如更改包含sam和sarah的Hasthastuch的元组中的bole an? 知道列表是不可变的,这是一种好的做法吗? 是否有另一种/更干净的方法来保存有限的标志列表 hasmoustache=[('jon',Fa
hasmoustache=[('jon',False,'Male'),('sam',False,'Male'),('sarah',False,'Female')]
# hasmoustache is list of tuples describing (name,has a moustache?,gender)
name = 'Joe'
gender = 'Male'
if name not in hasmoustache:
append hasmoustache.((name,False,gender))
for y in hasmoustache:
print y
barber=[('jon',1),('sam',8),('sarah',10)]
# barber is a list of tuples describing (name,number of weeks since last visit to the barber)
for m in barber:
if m[1]>4
# Do something to change tuple with name=m[0] in hasmoustache to True
# List in python are immutable so how to do it?
callthem = [x[0] for x in hasmoustache if x[1]]
for y in callthem:
print y
for y in hasmoustache:
print y
输出应显示:
('jon',假'Male')
('sam',False,'Male')
(“莎拉”,假,“女性”)
(“乔”,假,“男”)
山姆
莎拉
('jon',假'Male')
(“山姆”,对,“男性”)
(“莎拉”,没错,“女性”)
('Joe',False',Male')你有点倒退了。是可变的,这意味着您可以在创建它们之后修改它们的值,是不可变的序列类型:这些对象一旦创建就不能修改。如果你想有一个结构来实现你想要的,你可以使用列表列表
barber=[['jon',1],['sam',8],['sarah',10]]
那么问题1的答案是什么呢
您无法更改元组的元素,因此如果不创建一个全新的元组并用该元组替换列表中的当前元组,您将无法完成预期的操作
问题2
列表不是不可变的,因此它是非事件的
问题3
如果名称都是唯一的,并且保留一个信息列表作为值,则可以使用dict
,使用名称作为键
这是一个使用dict的示例:
barber={'jon': 1,'sam':8,'sarah': 10 }
if barber.get("sam") > 4: # get value of sam
print barber.get("sam")
8
让hasmoustace成为一个口述:
hasmoustache={'jon':[False,'Male'],'sam':[False,'Male'],'sarah':[False,'Female']}
barber={'jon':1,'sam':8,'sarah':10}
if barber.get("sam") > 4:
hasmoustache.get("sam")[0]= True
print hasmoustache
{'sarah': [False, 'Female'], 'sam': [True, 'Male'], 'jon': [False, 'Male']}
听起来是时候探索类和属性了。您可以有携带状态的实例。是的,绝对可以。试着让我的头脑清醒过来。我应该把整个脚本放在这里吗?应该更新Hashautch中的布尔值,而不是barber中的布尔值。理发师名单不变。