将 3 个字符串添加到列表中的相同索引
Adding 3 strings to the same index in a list
在 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' )]
如何以这种格式添加到此列表?
例如:
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])
在此先感谢您的帮助。
TL;DR:这个问题最简单的答案是
output = [(item[0],item[1],item[2]) for item.split(",") in someBigList]
其中 item 是逗号分隔的字符串。
长答案。
Python 能够在其可迭代数据结构中存储任何东西(是的,任何东西!)。
您可以在列表中存储列表,在列表中存储字典,反之亦然,一个对象或一个元组或一个集合。
Tuple
数据结构在 Python 中广泛使用,tuple
和 list
之间的主要区别在于,您不能更改 [= =14=],而您可以在 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')]
希望对您有所帮助。
在 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' )]
如何以这种格式添加到此列表? 例如:
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])
在此先感谢您的帮助。
TL;DR:这个问题最简单的答案是
output = [(item[0],item[1],item[2]) for item.split(",") in someBigList]
其中 item 是逗号分隔的字符串。
长答案。
Python 能够在其可迭代数据结构中存储任何东西(是的,任何东西!)。 您可以在列表中存储列表,在列表中存储字典,反之亦然,一个对象或一个元组或一个集合。
Tuple
数据结构在 Python 中广泛使用,tuple
和 list
之间的主要区别在于,您不能更改 [= =14=],而您可以在 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')]
希望对您有所帮助。