python - 在列表中循环并将项目分配给新列表 - 有线行为
问题描述
我遍历列表列表,当我将项目附加到数组时,它单独添加每个字母而不是整个单词,除非我删除'[]'..为什么会发生,只是好奇?例子:
只是想知道为什么会发生这种行为
def printTable(lists):
for list in lists:
s = []
for item in list:
s += item
print(s)
print()
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
printTable(tableData)
它不是将每个项目添加到列表中,而是添加每个字母(同时删除列表数据类型,它按字母添加它们作为例外)只是好奇为什么会发生这种情况。
解决方案
而不是s += item
试试这个:
s.append(item)
当你s += item
说它等同于s = s + item
, 并且肯定s
是 list 并且item
是一个字符串时,并且在 python 中字符串是可迭代的,所以这就是它看起来像这样的原因。
看下面的例子:
a = 'hi'
print(list(a))
['h', 'i']
正如@roganjosh 在评论中所说:
注意
list
作为变量名使用不好,list
是python内置的。
推荐阅读
- sql - oracle删除表中的重复数据
- c# - 在使用泛型创建扩展方法期间,创建变量类型的实例时无法提供参数错误
- c# - 如何在 Unity Hololens 中将文件从一个目录移动到另一个目录
- swiftui - SwiftUI 水平填充会产生意想不到的间隙
- laravel - Laravel:如何在路由中将字符串设置为可选?
- python - 如何用Python合并列表中的字典
- ios - iOS 13:MPMediaPickerController - 内部错误/找不到请求的应用扩展
- angular - 如何使容器/ div 的一部分选择性地忽略角度中的单击事件?
- python - 如何修复 Python 中的“__new__() 缺少 3 个必需的位置参数:..”错误
- node.js - Express 应用程序无法从我的数据库中获取某些项目(Sqlite)