如何从其他lis中的信息更改列表中的元素

2024-04-23 17:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建两个元素的列表(名为“card”):“NUMBER”和列表“numbers”中的一个数字。在“数字”列表中有多少张牌就有多少张牌。 为什么我要用那个密码得到相同号码的卡片?你知道吗

card=['NUMBER','']
numbers = [1,3,5]
All_cards=[]
for i in range(len(numbers)):
    All_cards.append(card)
    All_cards[i][1]=numbers[i]
print(All_cards)

我得到的是:[['NUMBER',5],['NUMBER',5],['NUMBER',5]]

我想要的是:[NUMBER',1],['NUMBER',3],['NUMBER',5]]


Tags: in元素密码number列表forlenrange
3条回答

如果您添加一个print语句作为for循环的最后一行,您就会知道发生了什么。你知道吗

具体如下:

[['NUMBER', 1]]
[['NUMBER', 3], ['NUMBER', 3]]
[['NUMBER', 5], ['NUMBER', 5], ['NUMBER', 5]]
[['NUMBER', 5], ['NUMBER', 5], ['NUMBER', 5]]

它基本上覆盖了这个值。你知道吗

您可以如下所示修改代码以获得预期的输出:

numbers = [1,3,5]
All_cards=[]
for i in xrange(len(numbers)):
    # All_cards[i][1]=numbers[i]
    card=['NUMBER', numbers[i]]
    All_cards.append(card)
print(All_cards)

输出:

[['NUMBER', 1], ['NUMBER', 3], ['NUMBER', 5]]

您可以通过简单的列表理解:

numbers = [1,3,5]
all_cards = [['NUMBER', i] for i in numbers]

你已经有了很好的答案来解决你眼前的问题(我建议你试着去理解Roseman先生的答案中所介绍的列表理解的机制,因为它在太多的情况下非常方便),但是也许你想理解为什么你会有这样奇怪的结果。你知道吗

你得到了一个奇怪的结果,因为你可以改变列表的内容。。你知道吗

嗯?当你在翻译的提示下打字时,跟我来

>>> ['NUMBER', '']
['NUMBER', '']
>>>

你正在创建一个列表,如果你做了一个作业,它会立即丢失(不确切,但是)

>>> card = ['NUMBER', '']
>>>

您已经创建了一个列表(rhs of =),并为此列表分配了一个名称(card,lhs of =)。你知道吗

现在使用for循环

  1. All_cards.append(card)并不意味着你要在列表后面加上一个副本,而是在同一个列表后面加上(三次)。你知道吗
  2. All_cards[i][1]=numbers[i]意味着您在循环的所有三个过程中修改同一个列表。你知道吗
  3. 当您print(All_cards)看到所有三个元素都是相同的,并且内部列表的第二个元素是您在循环中使用的最后一个数值。。。你知道吗

我可以补充一点,这是每个Python程序员的成年礼吗?一路顺风

相关问题 更多 >