Почему list () и [] комбинируют строки по-разному? - PullRequest
0 голосов
/ 18 мая 2019

Это вывод кода ниже

Я играл с list () и [], чтобы объединить строки, выбранные из имен столбцов. Затем я заметил некоторые своеобразные поведения (показано ниже). Может кто-нибудь объяснить, почему Python интерпретирует list () + [] OR [] + list () по-другому?

Я пытался найти разницу между list () и [], но ни один из ответов не решил мою путаницу.

# below is the output for census_df.columns
Index(['SUMLEV', 'REGION', 'DIVISION', 'STATE', 'COUNTY', 'STNAME', 'CTYNAME',
       'CENSUS2010POP', 'ESTIMATESBASE2010', 'POPESTIMATE2010',
       'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013',
       'POPESTIMATE2014', 'POPESTIMATE2015', 'NPOPCHG_2010', 'NPOPCHG_2011',
       'NPOPCHG_2012', 'NPOPCHG_2013', 'NPOPCHG_2014', 'NPOPCHG_2015',
       'BIRTHS2010', 'BIRTHS2011', 'BIRTHS2012', 'BIRTHS2013', 'BIRTHS2014',
       'BIRTHS2015', 'DEATHS2010', 'DEATHS2011', 'DEATHS2012', 'DEATHS2013',
       'DEATHS2014', 'DEATHS2015', 'NATURALINC2010', 'NATURALINC2011',
       'NATURALINC2012', 'NATURALINC2013', 'NATURALINC2014', 'NATURALINC2015'],
      dtype='object')



print(list(census_df.columns[9:15]) + [census_df.columns[6]])
print("\n")
print(list(census_df.columns[9:15]) + list(census_df.columns[6]))
print("\n")
print([census_df.columns[9:15]] + [census_df.columns[6]])
print("\n")
print([census_df.columns[6]] + list(census_df.columns[9:15]))
print("\n")
print(list(census_df.columns[6]) + list(census_df.columns[9:15]))
print("\n")
print(list(census_df.columns[6]) + [census_df.columns[9:15]])

Я ожидал, что они будут ["col6", "col9" ... "col14"]. Вместо этого иногда это:

["c", "o", "l", "6", "col9", "col10" ... "col14"] ИЛИ ["c", "o", "l", "6", index (... dtype = "object")]

1 Ответ

7 голосов
/ 18 мая 2019

list() преобразует любую итерацию в список. Строки являются итеративными:

>>> x = 'test'
>>> [x]
['test']
>>> list(x)
['t', 'e', 's', 't']

, в то время как синтаксис [x] создает буквенный список с одним элементом x. Они не эквивалентны, даже близко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...