检查一系列列表是否包含项目
Checking if a series of lists contain items
我有一个数据集,我正在尝试循环并仅过滤我正在寻找的“交换”。我试过 any()
但它似乎不起作用。有人可以告诉我我做错了什么吗?
我想要的输出是一个列表,其中包含 "NASDAQ"
或 "NYSE"
。
exchanges = ['NASDAQ', 'NYSE']
for i in ticker_csv:
if any(exchanges) in i:
print(i)
由于我的条件没有得到满足,因此什么也没有打印出来。
这是 ticker_csv
内的数据样本。
['ZVZZC', 'ZVZZC', 'NASDAQ', 'Stock', '2016-01-29', 'null', 'Active']
['ZVZZT', 'NASDAQ TEST STOCK', 'Bats', 'Stock', '2017-09-22', 'null', 'Active']
['ZWRK', 'Z-Work Acquisition Corp - Class A', 'NASDAQ', 'Stock', '2021-04-05', 'null', 'Active']
['ZWRKU', 'Z-Work Acquisition Corp - Units (1 Ord Class A & 1/3 War)', 'NASDAQ', 'Stock', '2021-01-29', 'null', 'Active']
['ZWRKW', 'Z-Work Acquisition Corp - Warrants (29/01/2026)', 'NASDAQ', 'Stock', '2021-03-24', 'null', 'Active']
['ZWZZT', 'NASDAQ TEST STOCK', 'W', 'Stock', '2017-09-22', 'null', 'Active']
['ZXYZ-A', 'NASDAQ SYMBOLOGY TEST', 'NASDAQ', 'Stock', '2016-01-19', 'null', 'Active']
['ZXZZT', 'NASDAQ TEST STOCK', 'Bats', 'Stock', '2006-07-10', 'null', 'Active']
['ZY', 'Zymergen Inc', 'Bats', 'Stock', '2021-04-22', 'null', 'Active']
['ZYME', 'Zymeworks Inc', 'MKT', 'Stock', '2017-04-28', 'null', 'Active']
['ZYNE', 'Zynerba Pharmaceuticals Inc', 'bats', 'Stock', '2015-08-05', 'null', 'Active']
['ZYXI', 'Zynex Inc', 'NASDAQ', 'Stock', '2002-12-31', 'null', 'Active']
['ZZK', '', 'NYSE ARCA', 'Stock', '2020-07-22', 'null', 'Active']
['ZZZ', 'TEST TICKER FOR UTP', 'NYSE ARCA', 'Stock', '2014-10-31', 'null', 'Active']
您的原始代码的问题是内置 any
函数旨在获取一系列布尔值和 return 如果其中任何一个为 True,则为 True,但您向它传递了一个列表交流。
相反,您应该检查数据中是否存在每个交易所,并使用 any
确定一个或多个交易所是否为真:
for data in ticker_csv:
if any(exchange in data for exchange in exchanges):
print(data)
这里,data
是一个包含几个字段的列表:股票代码、全名、交易所等
更好的方法是观察交换始终是列表的第三个元素(索引 2)。所以你可以这样做:
for data in ticket_csv:
exchange = data[2]
if exchange in exchanges:
print(data)
一个更简洁的版本使用内置 filter
函数进行过滤:
for data in filter(lambda data: data[2] in exchanges, ticker_csv):
print(data)
如果您需要进行不区分大小写的比较,您也可以使用 data[2].upper()
,假设顶部的交易所列表全部为大写。
我有一个数据集,我正在尝试循环并仅过滤我正在寻找的“交换”。我试过 any()
但它似乎不起作用。有人可以告诉我我做错了什么吗?
我想要的输出是一个列表,其中包含 "NASDAQ"
或 "NYSE"
。
exchanges = ['NASDAQ', 'NYSE']
for i in ticker_csv:
if any(exchanges) in i:
print(i)
由于我的条件没有得到满足,因此什么也没有打印出来。
这是 ticker_csv
内的数据样本。
['ZVZZC', 'ZVZZC', 'NASDAQ', 'Stock', '2016-01-29', 'null', 'Active']
['ZVZZT', 'NASDAQ TEST STOCK', 'Bats', 'Stock', '2017-09-22', 'null', 'Active']
['ZWRK', 'Z-Work Acquisition Corp - Class A', 'NASDAQ', 'Stock', '2021-04-05', 'null', 'Active']
['ZWRKU', 'Z-Work Acquisition Corp - Units (1 Ord Class A & 1/3 War)', 'NASDAQ', 'Stock', '2021-01-29', 'null', 'Active']
['ZWRKW', 'Z-Work Acquisition Corp - Warrants (29/01/2026)', 'NASDAQ', 'Stock', '2021-03-24', 'null', 'Active']
['ZWZZT', 'NASDAQ TEST STOCK', 'W', 'Stock', '2017-09-22', 'null', 'Active']
['ZXYZ-A', 'NASDAQ SYMBOLOGY TEST', 'NASDAQ', 'Stock', '2016-01-19', 'null', 'Active']
['ZXZZT', 'NASDAQ TEST STOCK', 'Bats', 'Stock', '2006-07-10', 'null', 'Active']
['ZY', 'Zymergen Inc', 'Bats', 'Stock', '2021-04-22', 'null', 'Active']
['ZYME', 'Zymeworks Inc', 'MKT', 'Stock', '2017-04-28', 'null', 'Active']
['ZYNE', 'Zynerba Pharmaceuticals Inc', 'bats', 'Stock', '2015-08-05', 'null', 'Active']
['ZYXI', 'Zynex Inc', 'NASDAQ', 'Stock', '2002-12-31', 'null', 'Active']
['ZZK', '', 'NYSE ARCA', 'Stock', '2020-07-22', 'null', 'Active']
['ZZZ', 'TEST TICKER FOR UTP', 'NYSE ARCA', 'Stock', '2014-10-31', 'null', 'Active']
您的原始代码的问题是内置 any
函数旨在获取一系列布尔值和 return 如果其中任何一个为 True,则为 True,但您向它传递了一个列表交流。
相反,您应该检查数据中是否存在每个交易所,并使用 any
确定一个或多个交易所是否为真:
for data in ticker_csv:
if any(exchange in data for exchange in exchanges):
print(data)
这里,data
是一个包含几个字段的列表:股票代码、全名、交易所等
更好的方法是观察交换始终是列表的第三个元素(索引 2)。所以你可以这样做:
for data in ticket_csv:
exchange = data[2]
if exchange in exchanges:
print(data)
一个更简洁的版本使用内置 filter
函数进行过滤:
for data in filter(lambda data: data[2] in exchanges, ticker_csv):
print(data)
如果您需要进行不区分大小写的比较,您也可以使用 data[2].upper()
,假设顶部的交易所列表全部为大写。