Как напечатать массив строк без скобок, чтобы его можно было использовать в параметре функции

#python-3.x #pandas #dataframe #function #loops

#python-3.x #панды #фрейм данных #функция #петли

Вопрос:

Я создал функцию, которая принимает 4 параметра. Но у меня есть 100 различных наборов из этих 4 параметров, которые я хочу ввести в свою функцию.

Пытаюсь повторить набор из 100 с 4 параметрами в каждом, но мне нужны результаты, показывающие только строки, а не скобки любого типа, так как моя функция не может иметь дополнительных скобок.

Вот мой код:

 def main():  run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]),  ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])]   for k in run_list:  myFunction(k)  

Если я разберу код, я получу следующее:

 run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]),  ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])]   for k in run_list:  print(str(k))  gt;gt;gt; ('file1.csv', 'file2.csv', 'column_name1', 'column_name2') gt;gt;gt; ('file3.csv', 'file4.csv', 'column_name3', 'column_name4')  

Желаемый вывод без скобок, поэтому я могу использовать 4 параметра из каждого набора, для myFunction которых требуется 4 параметра:

 gt;gt;gt; 'file1.csv', 'file2.csv', 'column_name1', 'column_name2' gt;gt;gt; 'file3.csv', 'file4.csv', 'column_name3', 'column_name4'  

Я пытался .strip('[]') , это сработало print , но не получилось function :

 def main():  run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]),  ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])]   for k in run_list:  print(k.strip('[]'))  gt;gt;gt; 'file1.csv', 'file2.csv', 'column_name1', 'column_name2' gt;gt;gt; 'file3.csv', 'file4.csv', 'column_name3', 'column_name4'  def main():  run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]),  ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])]   for k in run_list:  myFunction(k.strip('[]'))  gt;gt;gt;AttributeError: 'list' object has no attribute 'strip'  

Ответ №1:

IIUC использовать * для распаковки:

 def myFunction(a,b):  print (a)  file1.csv  file3.csv  print (b)  file2.csv  file4.csv  return a   '__'   b   #test list of tuples run_list = [('file1.csv', 'file2.csv'),('file3.csv', 'file4csv')]   for k in run_list:  out = myFunction(*k)  print (out)  file1.csv__file2.csv  file3.csv__file4csv  

Если проходят кортежи:

 def myFunction(a):  print (a)  ('file1.csv', 'file2.csv')  ('file3.csv', 'file4csv')  return '__'.join(a)  run_list = [('file1.csv', 'file2.csv', ),  ('file3.csv', 'file4csv')]   for k in run_list:  out = myFunction(k)  print (out)  file1.csv__file2.csv  file1.csv__file2.csv