Python列表连接逻辑
我试图将两个列表连接起来,分别是“姓名”和“年龄”。 但我想这样做,每次将他们的索引[I+1]附加到另一个列表中。 因此,我的目标不是['John',17','Mike',21',],而是每对都有不同的索引,并且是一个列表元素 (注意:我知道我可以用zip()函数实现,这是为了练习) 所以我最终得到了那个密码--> 输出-->['Ana','17',['John','22',['Bob','33',['Mike','8',['July','76']] 正如你所见,我成功地做到了这一点,但奇怪的是,行b.append([]+a)。我意外地得到了我想要的,当我键入b.append(a)时,它返回空的b列表。 但是,通过遵循所附代码中的路径,我正在完成我试图做的事情。有人能解释为什么这样做有效吗?我没能抓住它Python列表连接逻辑,python,list,for-loop,logic,concatenation,Python,List,For Loop,Logic,Concatenation,我试图将两个列表连接起来,分别是“姓名”和“年龄”。 但我想这样做,每次将他们的索引[I+1]附加到另一个列表中。 因此,我的目标不是['John',17','Mike',21',],而是每对都有不同的索引,并且是一个列表元素 (注意:我知道我可以用zip()函数实现,这是为了练习) 所以我最终得到了那个密码--> 输出-->['Ana','17',['John','22',['Bob','33',['Mike','8',['July','76']] 正如你所见,我成功地做到了这一点,但奇怪的是
提前感谢。如果两个列表的元素数相同,则可以使用zip()函数 注意:zip()函数只会迭代到传递最小的列表
list1=[]
for x,y in zip(names,ages):
list1.append([x,y])
print(list1)
如果两个列表的元素数相同,则可以使用zip()函数 注意:zip()函数只会迭代到传递最小的列表
list1=[]
for x,y in zip(names,ages):
list1.append([x,y])
print(list1)
在代码中添加打印显示b在循环后被“清除”,并且它没有在循环中存储正确的信息。它本质上是相同
a
的副本:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
a = []
b = []
for i in range(len(names)):
a.append(names[i])
a.append(ages[i])
print(a)
b.append(a)
print(b)
a.clear()
print(b)
这是因为列表在python中是可变的。清除它时,b所指向的数据也将被删除。当您执行[]+a
时,您正在创建一个新列表,该列表不再是a
的引用。通过这种方式更改代码,您可以得到您想要的:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
b = []
for i in range(len(names)):
a = []
a.append(names[i])
a.append(ages[i])
b.append(a)
print(b)
为了帮助您理解我所说的可变的含义,请参见以下示例:
a = ['some data']
b = [a]
print(b)
a.clear()
print(b)
这就是a+[]
工作的原因:
a = ['some data']
b = [a+[]]
print(b)
a.clear()
print(b)
在代码中添加打印显示b在循环后被“清除”,并且它没有在循环中存储正确的信息。它本质上是相同
a
的副本:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
a = []
b = []
for i in range(len(names)):
a.append(names[i])
a.append(ages[i])
print(a)
b.append(a)
print(b)
a.clear()
print(b)
这是因为列表在python中是可变的。清除它时,b所指向的数据也将被删除。当您执行[]+a
时,您正在创建一个新列表,该列表不再是a
的引用。通过这种方式更改代码,您可以得到您想要的:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
b = []
for i in range(len(names)):
a = []
a.append(names[i])
a.append(ages[i])
b.append(a)
print(b)
为了帮助您理解我所说的可变的含义,请参见以下示例:
a = ['some data']
b = [a]
print(b)
a.clear()
print(b)
这就是a+[]
工作的原因:
a = ['some data']
b = [a+[]]
print(b)
a.clear()
print(b)
下面是我使用列表理解的解决方案
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
new_list = [ [names[i], ages[i]] for i in range(len(names))]
print(new_list)
下面是我使用列表理解的解决方案
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
new_list = [ [names[i], ages[i]] for i in range(len(names))]
print(new_list)
根据您的代码b.append([]+a)
每次都使用数组进行连接。如果您使用这样的print语句进行检查
for i in range(len(names)):
a.append(names[i])
a.append(ages[i])
print("=>",a)
然后向您展示输出是什么
=> ['Ana', '17']
=> ['John', '22']
=> ['Bob', '33']
=> ['Mike', '8']
=> ['July', '76']
因此,当您添加b.append([]+a)
我们现在理解得更清楚了
b=[]
当我们尝试
b、 追加([]+a)
这意味着上面的数组将多个数组连接成一个数组
我认为当你使用时,你很容易解决你的问题
zip()
用于迭代
myList=[]
for a,b in zip(names,ages):
list.append([a,b])
print(myList)
输出:
[['Ana', '17'], ['John', '22'], ['Bob', '33'], ['Mike', '8'], ['July', '76']]
根据您的代码b.append([]+a)
每次都使用数组进行连接。如果您使用这样的print语句进行检查
for i in range(len(names)):
a.append(names[i])
a.append(ages[i])
print("=>",a)
然后向您展示输出是什么
=> ['Ana', '17']
=> ['John', '22']
=> ['Bob', '33']
=> ['Mike', '8']
=> ['July', '76']
因此,当您添加b.append([]+a)
我们现在理解得更清楚了
b=[]
当我们尝试
b、 追加([]+a)
这意味着上面的数组将多个数组连接成一个数组
我认为当你使用时,你很容易解决你的问题
zip()
用于迭代
myList=[]
for a,b in zip(names,ages):
list.append([a,b])
print(myList)
输出:
[['Ana', '17'], ['John', '22'], ['Bob', '33'], ['Mike', '8'], ['July', '76']]
我会在列表中使用zip:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
b = [[name,age] for name, age in zip(names,ages)]
我会在列表中使用zip:
names = ['Ana', 'John', 'Bob', 'Mike', 'July']
ages = ['17', '22', '33', '8', '76']
b = [[name,age] for name, age in zip(names,ages)]
您可以使用
zip
和list
将其写入一行代码中:
result = list(zip(names, ages))
您可以使用
zip
和list
将其写入一行代码中:
result = list(zip(names, ages))
很好的方法很好的方法很好的解释,谢谢