我正在尝试在Python中生成字符串数组(或可能对我的任务更有用的任何其他数据结构,但我想不起其他任何东西)。
我正在处理的程序有几组单选按钮。例如,一组“阻止” /“备用”和“单个” /“重复”。
有关激活字符串数组的外观的示例:
单块:
list = ['A', 'B', 'C', '1', '2', '3']
单行替代:
list = ['A', '1', 'B', '2', 'C', '3']
替代,重复:
list = ['A', 'A', '1', '1', 'B', 'B', '2', '2', 'C', 'C', '3', '3']
这些仅仅是几个例子,程序有更多的方法,但是概念是相同的。
我需要读取此字符串数组,并将其用作各种模式,以进一步从Pandas Dataframe中选择一些数据。
如何在不为每个可能的组合编写if子句的情况下生成此数组?
答案 0 :(得分:0)
我尝试使用Jupyter Notebook和一些用于用户交互的小部件来解决此问题。我不知道您如何获得这些信息,但是要复制我正在使用的相同行为。
In [1]:
import ipywidgets as widgets # Widgets for user interactions
## Change the list as you want
my_list = ['A', 'B', 'C', '1', '2', '3']
single_duplicate = widgets.ToggleButtons(
description='Do you want to Duplicate the list ?',
options=['Single', 'Duplicate'],
value='Single',
style={'description_width': 'initial'}
)
single_duplicate
Out [1]:
In [2]:
block_alter = widgets.ToggleButtons(
description='Do you want to Alternate the list?',
options=['Block', 'Alternate'],
value='Block',
style={'description_width': 'initial'}
)
block_alter
Out [2]:
In [3]:
def get_array(single_duplicate, block_alter, my_list):
temporary_list = []
## Answer to Single or Duplicate
if single_duplicate == 'Duplicate':
for elem in my_list:
temporary_list.append(elem)
temporary_list.append(elem)
else:
temporary_list = my_list
## Answer to Block or Aternate ?
new_list = []
if block_alter == 'Alternate':
half = int(len(temporary_list)/2)
for i in range(half):
new_list.append(temporary_list[i])
new_list.append(temporary_list[i + half])
else:
new_list = temporary_list
return new_list
使用get_array(single_duplicate.value, block_alter.value, my_list)
查看用户选择的输出
In [3]:
print(get_array('Single', 'Block', my_list))
print(get_array('Duplicate', 'Block', my_list))
print(get_array('Single', 'Alternate', my_list))
print(get_array('Duplicate', 'Alternate', my_list))
Out [3]:
['A', 'B', 'C', '1', '2', '3']
['A', 'A', 'B', 'B', 'C', 'C', '1', '1', '2', '2', '3', '3']
['A', '1', 'B', '2', 'C', '3']
['A', '1', 'A', '1', 'B', '2', 'B', '2', 'C', '3', 'C', '3']