我在python中迭代列表列表,我想更改嵌套列表的某些元素的日期格式。我试过了:
for dividend in dividend_data:
for date in dividend[1], dividend[3], dividend[4], dividend[5]:
date = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d")
但" date"变量不会返回到原始列表元素。我可以通过单独处理它们来做到这一点:
dividend[1] = datetime.strptime(dividend[1], '%m/%d/%Y').strftime("%Y-%m-%d")
dividend[3] = datetime.strptime(dividend[3], '%m/%d/%Y').strftime("%Y-%m-%d")
dividend[4] = datetime.strptime(dividend[4], '%m/%d/%Y').strftime("%Y-%m-%d")
dividend[5] = datetime.strptime(dividend[5], '%m/%d/%Y').strftime("%Y-%m-%d")
但是,必须有更好的方法来解决这个问题,对吗?
答案 0 :(得分:1)
我不认为您实际上正在更改日期变量。在
for date in dividend[1], dividend[3], dividend[4], dividend[5]:
您正在创建一个名为date的变量。更改此变量与更改该数组中的实际值不同。您可能需要做的是
for i in 1, 3, 4, 5:
dividend[i] = datetime.strptime(dividend[i], '%m/%d/%Y').strftime("%Y-%m-%d")
答案 1 :(得分:0)
<select data-bind="foreach: ts.groups, value: ts.selectedOption">
<option value ="-1"></option>
<optgroup data-bind="attr: {label: label}, foreach: children">
<option data-bind="text: label, option: value()"></option>
</optgroup>
</select>
<select data-bind="foreach: ts2.groups2,value:ts2.selectedOption">
<option value ="-1"></option>
<optgroup data-bind="attr: {label: label}, foreach: children">
<option data-bind="text: label,option: value()"></option>
</optgroup>
</select>
<hr />
<div data-bind="text: ts.specialProperty"></div>
发生的事情是你没有改变列表元素,你只是为一个局部变量的值赋予一个新的东西,它会被下一个东西快速覆盖,从不影响列表。
因此,抓住索引并按上述方式执行,更改列表中的项目而不只是分配新变量。
答案 2 :(得分:0)
这与嵌套列表没有任何关系,但通常与列表有关。您可以在适当的位置编辑它们,但不能使用元素的副本来完成它。
for idx in (1,3,4,5):
dividend[idx] = datetime.strptime(dividend[idx], '%m/%d/%Y').strftime("%Y-%m-%d")
答案 3 :(得分:0)
请改用索引。问题是date是与数组中的值分开的变量,因此将其设置为等于新的日期格式只需重新分配该变量。试试这个:
for dividend in dividend_data:
for date_num in range(1, 6):
dividend[date_num] = datetime.strptime(dividend[date_num], '%m/%d/%Y').strftime("%Y-%m-%d")