在this wxPython教程中,我偶然发现了这种方式来格式化列表:
packages = [('jessica alba', 'pomona', '1981'), ('sigourney weaver', 'new york', '1949'),
('angelina jolie', 'los angeles', '1975'), ('natalie portman', 'jerusalem', '1981'),
('rachel weiss', 'london', '1971'), ('scarlett johansson', 'new york', '1984' )]
如何以这种格式添加到此列表? E.g:
packages.append[(item1, item2, item3)]
该列表用于向wx.ListCtrl小部件添加内容,如下所示:
for i in packages:
index = self.list.InsertStringItem(sys.maxint, i[0])
self.list.SetStringItem(index, 1, i[1])
self.list.SetStringItem(index, 2, i[2])
提前感谢您的帮助。
答案 0 :(得分:1)
注意:这个问题最简单的答案是
output = [(item[0],item[1],item[2]) for item.split(",") in someBigList]
其中item是逗号分隔的字符串。
答案很长。
Python能够在其可迭代数据结构中存储任何内容(是的,任何东西!)。 您可以将列表存储在列表中,列表中的字典存储,反之亦然,对象或元组或集合。
Tuple
数据结构在Python中广泛使用,tuple
和list
之间的主要区别在于,您无法更改tuple
内的内容,而你可以在list
中做到这一点。不变性只是使用元组的优势之一。还有很多优点。
假设您上面的数据以某种形式出现,您必须将这些数据分组。 让我们说它们是用逗号隔开的字符串,就像在csv中一样。
with open("/tmp/test.csv","r") as readFl:
line = readFl.readlines()
lines
Out[5]:
['jessica alba, pomona, 1981',
'sigourney weaver, new york, 1949',
'angelina jolie, los angeles, 1975',
'natalie portman, jerusalem, 1981',
'rachel weiss, london, 1971',
'scarlett johansson, new york, 1984']
现在需要访问列表行的每个元素中的每个元素。 为此,我们使用元组列表。
output = []
for line in lines:
row = tuple(line.split(",")) # by default, split() returns a list, we cast it to a tuple.
output.append(row)
output
Out[16]:
[('jessica alba', 'pomona', '1981'),
('sigourney weaver', 'new york', '1949'),
('angelina jolie', 'los angeles', '1975'),
('natalie portman', 'jerusalem', '1981'),
('rachel weiss', 'london', '1971'),
('scarlett johansson', 'new york', '1984')]
希望这会有所帮助。